如何跳过数组循环中的第一个键?

aer*_*ran 49 php arrays

我有以下代码:

if ($_POST['submit'] == "Next") {
    foreach($_POST['info'] as $key => $value) {
        echo $value;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何让foreach函数从数组中的第二个键开始?

Mic*_*tum 116

对于相当小的数组,使用array_slice创建第二个:

foreach(array_slice($_POST['info'],1) as $key=>$value)
{
    echo $value;
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*igh 41

foreach(array_slice($_POST['info'], 1) as $key=>$value) {
    echo $value;
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想复制数组,则可以执行以下操作:

$isFirst = true;
foreach($_POST['info'] as $key=>$value) {
    if ($isFirst) {
        $isFirst = false;
        continue;
    }   
    echo $value;
}
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢 isFirst 解决方案。在您的面部逻辑中,扫描不熟悉的代码时很容易错过数组切片版本。 (2认同)
  • isFirst 解决方案也可以更好地扩展数组大小。 (2认同)

小智 25

难道你不能解开数组......

所以,如果我有一个我不想要第一个实例的数组,我可以:

unset($array[0]);
Run Code Online (Sandbox Code Playgroud)

这将从数组中删除实例.

  • 在这种情况下可以,但是如果要在数组中的第二个值与第一个值之间进行比较,该怎么办? (2认同)

Sea*_*ing 6

如果您正在使用普通数组,我会说使用类似的东西

foreach (array_slice($ome_array, 1) as $k => $v {...

但是,由于您正在查看用户请求,因此您对可能返回参数的顺序没有任何实际保证 - 某些浏览器/代理可能会更改其行为,或者您可能只是决定修改您的表单.未来.无论哪种方式,忽略数组的顺序并将POST值视为无序哈希映射符合您的最佳利益,为您提供两个选项:

  • 复制数组和unset要忽略的键
  • 循环遍历整个数组,并continue在看到你想要忽略的键时


Irm*_*tas 5

在循环中:

if ($key == 0) //or whatever
   continue;
Run Code Online (Sandbox Code Playgroud)