有多种方法可以解决这个问题.
第一个解决方案是使用一个标志布尔值来表示第一个元素,并在你的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"; }
您也可以array_slice()
阵列.我也使用count()
,以便能够将preserve_keys
参数设置为true.
$sliced = array_slice($array,1,count($array)-1,true); foreach($sliced as $key => $val) { echo "$key => $val\n"; }