Php 跳过foreach循环的第一个条目

Php 跳过foreach循环的第一个条目,php,arrays,loops,foreach,Php,Arrays,Loops,Foreach,我想跳过foreach循环的第一个条目,我知道一种方法,但是它使用了很多代码行,我想知道是否有更简单的方法: $i = 0; foreach($url AS $u) { if($i!=0) $cats[check_url($u)] = $u; $i++; } 还有更好的更正式的方法吗?另一种可能的方法是使用PHP内置的array_shift()函数在循环之前从数组中弹出第一项 如果不确定$url数组的索引方式,只需使用unset($url[0])删除索引[0]可能解决问题,也可

我想跳过foreach循环的第一个条目,我知道一种方法,但是它使用了很多代码行,我想知道是否有更简单的方法:

$i = 0;
foreach($url AS $u) {
    if($i!=0) $cats[check_url($u)] = $u;
    $i++;
}

还有更好的更正式的方法吗?

另一种可能的方法是使用PHP内置的array_shift()函数在循环之前从数组中弹出第一项

如果不确定$url数组的索引方式,只需使用
unset($url[0])
删除索引[0]可能解决问题,也可能无法解决问题。例如,如果$url按关联进行索引,它可能看起来更像:

$url['first'] = "a value";
$url['second'] = "some other value";
$url['third'] = "a different value";
为了确保排除第一个“索引”元素,不管与之关联的键是什么,可以使用array_shift(),如下所示:

这会弹出第一个元素并重置()数组指针


在此之后,您可以像正常情况一样执行foreach循环。

如果您有
$url
的数字键,您只需执行以下操作:

foreach($url AS $k => $u) {
    if($k) $cats[check_url($u)] = $u;
}

但是如果你的数组有非数字键,我认为你拥有的是最好的方法

foreach($url as$k=>u){if($k==0)continue;…}
或删除数组中的第一个值。或者改为使用for for循环,并从1开始。如何删除数组中的第一个值?@JackQueen use unset(数组[0]);做that@JackQueen要正确删除数组的第一个值,请使用
array\u shift()
。如果需要使用它,请将其保存到变量中,如果不需要,只需使用函数即可。要删除最后一个元素,请使用
array\u pop()
。使用数组函数@Zapp不应该工作,他的
$i++
在循环中,因此使用
继续
将跳过所有项目。
foreach($url AS $k => $u) {
    if($k) $cats[check_url($u)] = $u;
}