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

时间:2011-01-26 23:28:06

标签: php

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

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

5 个答案:

答案 0 :(得分:9)

您无法移动数组指针,但可以skip the iteration

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

    // business as usual
}

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

$skip = false;

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

    // business as usual

    if (/* something or other */) {
        $skip = true;
    }
}

我首先要检查是否有更好的逻辑来表达你想要的东西。如果没有,@netcoder's list each example是更简洁的方式。

答案 1 :(得分:5)

如前所述,您可以使用for循环(仅当您有数字键时)或continue。另一种方法是使用listeach迭代方法,它允许您使用nextprev等移动数组指针(因为它不会创建副本)像foreach那样的数组:

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

while (list($key, $value) = each($array)) {
   echo $value;
   next($array);
}

将输出:

024

答案 2 :(得分:0)

next($objects)

next - 推进数组的内部数组指针

答案 3 :(得分:0)

现在,我理解,你想要什么;),另外两个解决方案

$c = count($array);
for ($i = 0; $i < $c; $i += 2) {
  $item = $array[$i];
}

foreach (range(0, count($array), 2) as $i) {
  $item = $array[$i];
}

答案 4 :(得分:0)

使用for循环,如下所示:

for($i = 0; $i < sizeof($array); $i++)
{
    echo $array[$i]->objectParameter;
    $i++; //move internal pointer
    echo $array[$i]->objectParameter;
    $i++; //move internal pointer again
    echo $array[$i]->objectParameter;
    //$i++; //no need for this because for loop does that
}