如何更改 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 作为答案)