簡體   English   中英

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
}

首先需要找出數組最后一個鍵 ,並使用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

我會這樣做:

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

我發現首先檢查更容易,而不是最后檢查。 所以我會這樣做。

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

為什么不先彈出最后一個元素? 因此,您無需檢查當前元素是否是每次迭代中的最后一個元素。

函數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>

這樣的事情是可能的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM