如何更改 PHP 中第一个回显结果的 class?
How to change class of first echo result in PHP?
很简单,但我找不到答案。
我想列出子类别以在下面的代码中创建标签。这在我的输出中运行良好。但是第一个选项卡需要 <li class= "selected" >
才能在页面加载时显示内容。
如何强制第一个回显结果在 <li>
元素上包含 class?
.
.
.
[输出]
实际:..........类别 1 |第 2 类 |类别 3
需要:..........类别 1* |第 2 类 |类别 3
*class="selected"
<ul class="cd-tabs-navigation">
<?php
$argumentos = array(
'hide_empty' => 1,
'child_of' => 44,
);
$categories = get_categories($argumentos);
foreach($categories as $category) {
echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
}
?>
</ul>
.
.
[编辑]
Lal 的解决方案。谢谢大家!
foreach($categories as $category) {
if(++$i==1)
echo '<li class="selected"><a class="selected" data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
else
echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
}
您可以对 foreach 使用此语法。使用此语法,您在 $k 中有迭代的索引,而在 $v 中有您正在迭代的数组的值。所以如果 $k == 0 你在第一次迭代中。
$a = array("first", "second", "third", "fourth");
foreach ($a as $k=>$v) {
echo $k . "--->" . $v ;
if($k == 0){
echo "First iteration!";
//Do your stuff
}
echo "<br>";
}
我建议你使用计数器..不确定这是否是正确的方法..
如下更改您的foreach
$i=0;
foreach($categories as $category) {
if($i==0)
echo '<li class="selected"><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
else
echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
$i++;
}
或
如答案 here 中所建议,您可以 使用 array_shift()
单独处理数组中的第一项 。
也就是下面这样
$first = array_shift($categories);
echo '<li class="selected"><a data-content="' . $first ->slug . '" href="#' . $first ->slug . '">' . $first ->name . '</a></li>';
foreach($categories as $category) {
echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
}
在 docs
中阅读有关 array_shift()
的更多信息
Lal 的解决方案可以正常工作(只要您递增 $i
),但这里有一个更简单的方法,无需额外的计数器变量:
foreach($categories as $index => $category){
if(!$index) echo "This is the first element";
else echo "This is not the first element";
}
(不确定这应该是编辑还是答案,因为它基本上是相同的方法,但语法稍微简单一些,我现在 post 作为答案)
很简单,但我找不到答案。
我想列出子类别以在下面的代码中创建标签。这在我的输出中运行良好。但是第一个选项卡需要 <li class= "selected" >
才能在页面加载时显示内容。
如何强制第一个回显结果在 <li>
元素上包含 class?
.
.
.
[输出]
实际:..........类别 1 |第 2 类 |类别 3
需要:..........类别 1* |第 2 类 |类别 3
*class="selected"
<ul class="cd-tabs-navigation">
<?php
$argumentos = array(
'hide_empty' => 1,
'child_of' => 44,
);
$categories = get_categories($argumentos);
foreach($categories as $category) {
echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
}
?>
</ul>
.
.
[编辑]
Lal 的解决方案。谢谢大家!
foreach($categories as $category) {
if(++$i==1)
echo '<li class="selected"><a class="selected" data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
else
echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
}
您可以对 foreach 使用此语法。使用此语法,您在 $k 中有迭代的索引,而在 $v 中有您正在迭代的数组的值。所以如果 $k == 0 你在第一次迭代中。
$a = array("first", "second", "third", "fourth");
foreach ($a as $k=>$v) {
echo $k . "--->" . $v ;
if($k == 0){
echo "First iteration!";
//Do your stuff
}
echo "<br>";
}
我建议你使用计数器..不确定这是否是正确的方法..
如下更改您的foreach
$i=0;
foreach($categories as $category) {
if($i==0)
echo '<li class="selected"><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
else
echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
$i++;
}
或
如答案 here 中所建议,您可以 使用 array_shift()
单独处理数组中的第一项 。
也就是下面这样
$first = array_shift($categories);
echo '<li class="selected"><a data-content="' . $first ->slug . '" href="#' . $first ->slug . '">' . $first ->name . '</a></li>';
foreach($categories as $category) {
echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
}
在 docs
中阅读有关array_shift()
的更多信息
Lal 的解决方案可以正常工作(只要您递增 $i
),但这里有一个更简单的方法,无需额外的计数器变量:
foreach($categories as $index => $category){
if(!$index) echo "This is the first element";
else echo "This is not the first element";
}
(不确定这应该是编辑还是答案,因为它基本上是相同的方法,但语法稍微简单一些,我现在 post 作为答案)