PHP foreach 如果数组最后


PHP Foreach If Array Last

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插件创建导航,但我不希望为最后一个元素显示" |",上面的代码是我到目前为止得到的,我正在考虑在注释行上使用if语句,但不确定最佳方法是什么, 有什么想法吗?谢谢!

end()函数是你需要的:

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

我发现检查第一个比检查最后一个更容易。所以我会这样做。

$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结合在一起。

首先,

您需要找出数组的最后一个键是什么,并使用 count(( 函数查找数组长度。
后记 我们将创建一个计数器并在每个循环中添加 +1。
如果计数器和最后一个键相等,则它是最后一个键。

    $last = 计数($array(;    $counter = 1;    foreach ($array as $key => $val({    if ($counter != $last({        除最后一个键外的所有键        做点什么           $counter++;将 1 添加到计数器计数        }        否则 {            这是最后一个键    }//结束其他}//end foreach

我会这样做:

$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);

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

这样的事情是可能的:

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

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

函数 array_pop(&$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>