php - 使用 foreach 预览下一个数组元素

标签 php arrays foreach

我有一个 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/

相关文章:

php - 数据库到数据库通信

php - PHP 中的位运算?

c++ - 是否可以在 C++ 的成员初始化列表中初始化数组?

foreach 中的 PHP 同名作为外部范围导致覆盖

c# - 摆脱多重循环?

loops - Stata中如何将两个循环变成双循环?

php - 一次为每次点击生成一个唯一的 ID

php - MySQL 服务器已经消失 (PHP)

Javascript 循环索引问题

c# - 如何与字符串数组和字符串进行比较