假设我有这个foreach循环:
foreach ($lists as $list) {
if (next list item == "test") {
echo "the next $list item equals 'test'";
}
}
我希望你从代码中得到我的目标。
谢谢,
答案 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:
答案 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