PHP:foreach一个数组对象,如何将内部指针移动到下一个?

Sta*_*bie 4 php

我需要循环和对象数组.在某些情况下,在循环内部,我需要将内部指针移动到数组中的下一个元素.我怎么做?

foreach($objects as $object)
{
   // TODO: move internal pointer to next one?
   // next($objects) doesn't work
}
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 9

您无法移动数组指针,但可以跳过迭代:

foreach ($objects as $object) {
    if (!interesting($object)) {
        continue;
    }

    // business as usual
}
Run Code Online (Sandbox Code Playgroud)

如果您需要决定是否跳过一次迭代,您可以执行以下操作:

$skip = false;

foreach ($objects as $object) {
    if ($skip) {
        $skip = false;
        continue;
    }

    // business as usual

    if (/* something or other */) {
        $skip = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我首先要检查是否有更好的逻辑来表达你想要的东西.如果没有,@ netcoder的list each例子是更简洁的方法.


net*_*der 5

如前所述,您可以使用for循环(仅当您有数字键时)或continue.另一种替代方法是使用listeach迭代方法,该方法可以移动与阵列指针next,prev等.(因为它不创建阵列等的拷贝foreach一样):

$array = array(1,2,3,4,5);

while (list($key, $value) = each($array)) {
   echo $value;
   next($array);
}
Run Code Online (Sandbox Code Playgroud)

将输出:

024
Run Code Online (Sandbox Code Playgroud)