PHP Foreach If Array Last
1 2 3 4 5 6 7 8 | foreach( $tabs2 as $tab2 => $name ){ $class = ( $tab2 == $current ) ? ' current' : ''; echo("<li class='posts'>$name"); echo(' |'); // If array last then do not display echo(' </li> '); } |
我正在使用foreach循环为我正在处理的WordPress插件创建导航,但我不希望最后一个元素显示"",上面的代码是我目前为止得到的,我正在考虑在注释行上使用if语句,但不确定什么是最好的方法,有什么想法吗?谢谢!
您需要的是
1 2 3 |
end()是很好的函数
1 2 3 4 |
。
或者你也可以手动操作以获得更多的理解。
1 2 3 4 5 6 | $copyofarry = $tabs2; $last = array_pop($copyofarry); foreach( $tabs2 as $tab2 => $name ){ if($last == $name) echo"|"; } |
我会这样做:
1 2 3 4 5 6 7 8 |
。
首先,您需要了解数组的最后一个键是什么,然后使用count()函数通过查找数组长度来完成此操作。接下来我们要创建一个计数器,并在每个循环上添加+1。如果计数器和最后一个键相等,则它是最后一个键。
1 2 3 4 5 6 7 8 9 10 11 12 13 | $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 |
。
我发现检查第一个比检查最后一个更容易。所以我改为这样做。
1 2 3 4 5 6 7 8 9 10 11 12 | $first = true; foreach( $tabs2 as $tab2 => $name ){ if ($first) { $first = false; } else { echo(' | '); } $class = ( $tab2 == $current ) ? ' current' : ''; echo("<li class='posts'>$name </li> "); } |
我还把最后两个
为什么不先弹出最后一个元素?因此,您不需要检查当前元素是否是每个迭代中的最后一个元素。
函数数组pop(&;$array)返回最后一个元素并将其从数组中移除。
1 2 3 4 5 | <?php $lastBreadcrumb = array_pop($breadcrumb); foreach ($breadcrumb as $crumb){ ?> <?php echo $crumb; ?> <?php } ?><span><?php echo $lastBreadcrumb?></span> |
这是可能的:
1 2 3 4 5 6 7 8 9 10 11 12 | $size = count($tabs2); $counter = 0; foreach( $tabs2 as $tab2 => $name ){ $class = ( $tab2 == $current ) ? ' current' : ''; echo("<li class='posts'>$name"); if ( ++$counter < $size ){ echo(' |'); // If array last then do not display } echo(' </li> '); } |
号