TRi*_*RiG 92
把事情简单化.
foreach ($arr as $k => $v) {
if ($k < 1) continue;
// your code here.
}
Run Code Online (Sandbox Code Playgroud)
请参阅continue手册中的控制结构.
Gor*_*don 30
A Foreach将重置数组:
注意:当foreach首次开始执行时,内部数组指针会自动重置为数组的第一个元素.这意味着您不需要在foreach循环之前调用reset().
使用for循环(仅当它不是关联数组时)
$letters = range('a','z');
for($offset=1; $offset < count($letters); $offset++) {
echo $letters[$offset];
}
Run Code Online (Sandbox Code Playgroud)
或while循环(可以是任何数组)
$letters = range('a','z');
next($letters);
while($letter = each($letters)) {
echo $letter['value'];
}
Run Code Online (Sandbox Code Playgroud)
或者用 LimitIterator
$letters = new LimitIterator(new ArrayIterator(range('a','z')), 1);
foreach($letters as $letter) {
echo $letter;
}
Run Code Online (Sandbox Code Playgroud)
它允许您通过构造函数指定起始偏移量和计数.
以上所有都将输出字母b到z而不是a到z
Cri*_*ian 19
你可以使用这个array_slice功能:
$arr = array(); // your array
foreach(array_slice($arr, 1) as $foo){
// do what ever you want here
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用您想要的任何偏移值.在这种情况下,1'跳过'数组的第一个元素.
在 foreach 中你不能这样做。想要得到你想要的,只有两种方法:
foreach 执行其名称所告诉您的操作。为每个元素做一些事情:)
编辑:好的,我想到了一个非常邪恶的解决方案。请尝试以下操作:
foreach(array_reverse(array_pop(array_reverse($array))) as $key => $value){
...
}
Run Code Online (Sandbox Code Playgroud)
这将反转数组,弹出最后一个元素并再次反转它。比你将拥有一个不包括第一个元素的元素。
但我建议使用其他解决方案之一。最好的是第一个。
还有一种变体:您可以使用 array_slice() 来实现:
foreach(array_slice($array, 1, null, true) as $key => $value){
...
}
Run Code Online (Sandbox Code Playgroud)
但是您应该使用所有三个参数来保留 foreach 循环的数组键: