有多种方法可以解决这个问题.
第一个解决方案是使用一个标志布尔值来表示第一个元素,并在你的foreach中继续
$firstElement = true;
foreach($array as $key => $val) {
if($firstElement) {
$firstElement = false;
} else {
echo "$key => $val\n";
}
}
如果您的元素自然地被数字索引,则不需要布尔标志,您可以简单地检查该键是否为0.
foreach($array as $key => $val) {
if($key === 0) continue;
echo "$key => $val\n";
}
第二种方法是将自己的方式作为自然数字索引的数组(如果还没有).我将使用array_keys()获得一个自然数字索引的键数组并循环.
$keys = array_keys($array);
foreach($keys as $index => $key) {
if($index === 0) continue;
$val = $array[$key];
echo "$key => $val\n";
}
第三种方法是使用阵列内部指针跳过第一个元素,然后使用reset(),next(),list()和each()循环继续.性能和资源方面,这是最好的选择.可维护性很大.
reset($array); // Reset pointer to 0
next($array); // Advance pointer to 1
while (list($key, $val) = each($array)) {
echo "$key => $val\n";
}
如果你不介意丢失数组的第一个元素,你可以在array_shift()它.
array_shift($array);
foreach($array as $key => $val) {
echo "$key => $val\n";
}
$sliced = array_slice($array, 1, count($array)-1, true);
foreach($sliced as $key => $val) {
echo "$key => $val\n";
}