我有一个 foreach,它在数组中的项目之间进行迭代以构建 Excel 文件。
如果数组中的下一个元素匹配特定条件(一个键中有特定值),我想在数组中的每个项目之后放置一个总行。
所以我想使用 next()
来检查该值,但据我所知和我读到的 here使用 next 我将指针移动到下一行,答案是使用 current。如何在不移动指针的情况下看到数组中的下一项?阅读这个问题我写了这个:
foreach($creds as $cred){
echo $cred['tipo'];
//if the next item has a 'tipo' key with a specific value
if(current($creds['tipo'])!='4'){
echo 'Total';
}
}
但这不起作用。如何解决?
编辑:根据答案,我将在下一次迭代开始时移动回显“总计”内容,而不是在当前迭代的底部。据我在答案中看到的,没有其他使用 foreach 的解决方案
最佳答案
要求是:
- 在
foreach
内循环查看next
值或键,但不更改current
的位置foreach
的迭代器指针循环。
虽然代码较多,但它是在同一数组上创建完全独立的迭代器的一种方法。
这个新的iterator
必须与 foreach
保持同步循环,但这很简单。
优点是您可以使用next()
以任何您希望的方式进行操作, prev()
, current()
等等并知道 foreach
循环不会受到影响。
在此示例中,要求测试当前条目之前的下一个条目。从指向第二个条目的迭代器开始并且每次都前进是值得的。
示例,未经测试的代码...
$iter = new \ArrayIterator($cred)s; // mirror of the `foreach` loop
迭代器 foreach($creds 为 $cred) {
// get next key and value...
$iter->next();
$nextKey = $iter->key();
$nextValue = $iter->current();
echo $cred['tipo'];
// if the next item has a 'tipo' key with a specific value
if($nextValue['tipo']) != '4'){
echo 'Total';
}
}
关于php - 使用 foreach 预览下一个数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828294/