PHP - effective way to determine last loop in foreach
每当我必须确定foreach循环中的current循环是否是最后一个循环时,我都会使用类似的方法:
1 2 3 4 5 6 7 8 9 10
| <?php
$i = count($myArray);
foreach ($myArray as $item) {
/** code goes here... */
$i--;
if ($i == 0) {
/** something happens here */
}
}
?> |
通常,这可以通过知道循环变量(第一个、最后一个,…)很容易地在模板化系统(如Latte、Smarty等)中完成。我的问题是:PHP中是否有类似的功能?
关键是必须创建$i变量,然后增加它并检查该值。我只想知道是否有一个简单的解决方案,让我的生活变得简单一点。:)
- 检查stackoverflow.com/questions/665135/&hellip;和stackoverflow.com/questions/1070244/&hellip;
- 我检查了一下,他们使用的是带有$i变量的解决方案,或者(通常)使用了带有end()函数的错误解决方案——正如@nospor所提到的。
在您的foreach中使用这个来检查项目是否是最后一个项目。
1 2 3
| if ($item === end($myArray)) {
// Last item
} |
号
用于检查项目是否为第一个项目
1 2 3
| if ($item === reset($myArray)) {
// First item
} |
- 所以看看这个例子:数组的值为:2,4,5,2-您的代码将为第一个元素返回true,因为第一个元素和最后一个元素的值相同
- 啊,是的,没错。如果已知数组具有非唯一值,则此操作有效。
通过检查($item==end($myarray))
1 2 3 4 5 6 7
| foreach($myArray as $key => $item) {
echo $item."<br />";
end($myArray);
if ($key === key($myArray)) {
echo 'LAST ELEMENT!';
}
} |
- 我做错什么了?-评估输入/584999
- $myarray=array("aa"、"bb"、"cc"、"dd")-这样定义数组
- Eval.in/585007(评估)
- 此代码也不正确,例如对于数组[1,0,false,2,3,4]
- 对数组[1,2,3,4,1]而言,固定到结尾也不是赖特。
- 你现在也分析了错误,因为你忘记了{
- EDOCX1[0]仍有问题
- @对于每个包含最后一个元素的重复数据的数组,这是错误的。
- 你刚刚从@phreakv6中复制了答案:(…
- @里格斯福利添加了一个解决方案。它的工作…
- end($myArray);和key($myArray);应该在循环之前。在循环中没有必要每次都检查它
- @苏科瓦内基,你怎么知道,贴出来的是复制的还是自制的????