我需要循环和对象数组.在某些情况下,在循环内部,我需要将内部指针移动到数组中的下一个元素.我怎么做?
foreach($objects as $object)
{
// TODO: move internal pointer to next one?
// next($objects) doesn't work
}
Run Code Online (Sandbox Code Playgroud)
您无法移动数组指针,但可以跳过迭代:
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例子是更简洁的方法.
如前所述,您可以使用for循环(仅当您有数字键时)或continue.另一种替代方法是使用list和each迭代方法,该方法可以移动与阵列指针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)