PHP函数知道循环的下一个值?

时间:2011-02-26 09:30:56

标签: php

假设我有这个foreach循环:

foreach ($lists as $list) {
    if (next list item == "test") {
         echo "the next $list item equals 'test'";
    }
}

我希望你从代码中得到我的目标。

谢谢,

3 个答案:

答案 0 :(得分:3)

您可以使用next()

请记住这会使内部指针前进,所以要回退它,请使用prev()

但是,在下面的示例中,我使用了current()来获取数组的当前指针。 foreach()似乎在构造体中增加了一次。

Konforce最初提出了这个想法。

最后一个空白是NULL,这很好(没有下一个成员)。 :)

$lists = range('a', 'f');

foreach($lists as &$value) {
   $next = current($lists);
   echo 'value: ' . $value . "\n" . 'next: ' . $next . "\n\n";
}

unset($next, $value);

输出

value: a
next: b

value: b
next: c

value: c
next: d

value: d
next: e

value: e
next: f

value: f
next: 

CodePad

答案 1 :(得分:2)

对于基于索引的数组,它很简单。使用for循环或在循环时使用$i => $val

对于其他数组,您可以执行以下操作:

$current = current($lists);
while ($current !== false)
{
        $next = next($lists);

        echo "$current => $next\n";

        $current = $next;
}

虽然如果你的数组包含字面值false,它将无效。您还需要reset再次循环播放。

答案 2 :(得分:1)

您可以模拟当前/下一个项目:

<?php
    $lists = range('a', 'f');

    foreach ($lists as $next) {
        if($list !== NULL) {
            if ($next == "test") {
                echo "the next $next item equals 'test'";
            }

            echo 'current: ' . $list . ', next: ' . $next . "\n";
        }
        $list = $next;
    }
?>

输出:

current: a, next: b
current: b, next: c
current: c, next: d
current: d, next: e
current: e, next: f