【问题标题】:How to change class of first echo result in PHP?如何在 PHP 中更改第一个回显结果的类?
【发布时间】:2015-12-29 21:18:45
【问题描述】:

很简单,但我找不到答案。

我想列出子类别以在下面的代码中创建选项卡。这个在我的输出中工作正常。但是第一个标签需要<li class= "selected" > 来显示页面加载时的内容。

如何强制第一个回显结果在<li> 元素上包含一个类?

.

.

.

[输出]

实际:........第 1 类 |类别 2 |第三类

需要:............ 类别 1* |类别 2 |第三类

*class="选中"

  <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>';
  }

【问题讨论】:

标签: php html wordpress class echo


【解决方案1】:

我建议你使用计数器..不确定这是否是正确的方法..

如下更改您的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() 的更多信息

【讨论】:

  • 几乎!我只需要值 (++$i == 1) 而不是 0 即可工作!我包括了有问题的最终代码。简单干净。非常感谢你,伙计!
  • @Lal 在第一个示例中,您没有增加 $i,因此 $i == 0 将始终为真。
【解决方案2】:

Lal 的解决方案可以正常工作(只要您增加 $i),但这里有一种更简单的方法,无需额外的计数器变量:

foreach($categories as $index => $category){
   if(!$index) echo "This is the first element";
   else echo "This is not the first element";
}

(不确定这应该是编辑还是答案,因为它基本上是相同的方法,但合成器稍微简单一些,我现在将作为答案发布)

【讨论】:

    【解决方案3】:

    您可以将此语法用于 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>";
    }
    

    【讨论】:

    • 他就是这么做的
    • 这没有回答问题。
    • 为什么不回答?如果他使用这种语法,他可以检查 $key 变量。如果它是 0,他在第一次迭代中,所以他可以向 html 添加一个类。
    • 所以在你的回答中说,否则你的回答毫无意义
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2015-09-15
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多