PHP Foreach如果数组最后

时间:2012-03-14 10:22:19

标签: php arrays if-statement foreach

foreach( $tabs2 as $tab2 => $name ){
    $class = ( $tab2 == $current ) ? ' current' : '';
    echo("<li class='posts'><a href='?page=pigg&tab=help&tab2=$tab2' class='$class'>$name");
    echo(' |'); // If array last then do not display
    echo('</a></li>');
}

我正在使用foreach循环为我正在处理的WordPress插件创建导航,但我不想要&#39; |&#39;要显示最后一个元素,上面的代码是我到目前为止所做的,我想在注释行上使用if语句,但不确定最好的方法是什么,任何想法?谢谢!

7 个答案:

答案 0 :(得分:63)

end()功能是您所需要的:

if(end($tabs2) !== $name){
    echo ' |'; // not the last element
}

答案 1 :(得分:1)

我发现首先检查更容易,而不是最后检查。所以我会这样做。

$first = true;
foreach( $tabs2 as $tab2 => $name ){
    if ($first) {
      $first = false;
    } else {
      echo(' | ');
    }
    $class = ( $tab2 == $current ) ? ' current' : '';
    echo("<li class='posts'><a href='?page=pigg&tab=help&tab2=$tab2' class='$class'>$name</a></li>");
}

我还将最后两个echos合并在一起。

答案 2 :(得分:1)

首先,您需要找出数组的最后一个键,并使用 count()函数找到数组长度。<登记/> 后来我们要创建一个计数器并在每个循环上添加+1。
如果计数器和最后一个键相等,则它是最后一个键。


    $last = count($array);
    $counter = 1;
    foreach ($array as $key => $val){
    if ($counter != $last){
        // all keys but the last one
        // do something     
       $counter++; // add one to counter count
        }
        else {
            // this is for the last key
    }// end else

}// end foreach

答案 3 :(得分:1)

我会这样做:

$arrLi = array();
foreach( $tabs2 as $tab2 => $name ){
  $class = ( $tab2 == $current ) ? ' current' : '';
  $arrLi[] = "<li class='posts'><a href='?page=pigg&tab=help&tab2=$tab2' class='$class'>$name</a></li>";
}
echo implode('|', $arrLi);

答案 4 :(得分:1)

end()是一个很好的使用功能

foreach( $tabs2 as $tab2 => $name ){
if(end($tabs2)== $name)
 echo "|";
}

或者您可以手动执行此操作以获得更多理解

  $copyofarry = $tabs2;
    $last = array_pop($copyofarry);
    foreach( $tabs2 as $tab2 => $name ){
        if($last == $name)
         echo "|";
    }

答案 5 :(得分:0)

这样的事情是可能的:

$size = count($tabs2);
$counter = 0;
foreach( $tabs2 as $tab2 => $name ){
    $class = ( $tab2 == $current ) ? ' current' : '';
    echo("<li class='posts'><a href='?page=pigg&tab=help&tab2=$tab2' class='$class'>$name");
    if ( ++$counter < $size ){
        echo(' |'); // If array last then do not display     
    }
    echo('</a></li>');
}

答案 6 :(得分:0)

为什么不先弹出最后一个元素?因此,您无需检查当前元素是否是每次迭代中的最后一个元素。

函数array_pop(&amp; $ array)返回最后一个元素并将其从数组中删除。

<div id="breadcrumb">
    <?php 
        $lastBreadcrumb = array_pop($breadcrumb);
        foreach ($breadcrumb as $crumb){ ?>
            <a href=""><?php echo $crumb; ?></a>
        <?php } ?><span><?php echo $lastBreadcrumb?></span>
</div>