PHP Foreach 如果数组最后

2022-08-30 19:29:09
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语句,但不确定最佳方法是什么, 任何想法?谢谢!


答案 1

end() 函数是你需要的:

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

答案 2

我发现首先检查比最后检查更容易。所以我会这样做。

$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