有多种方法可以解决这个问题.
第一个解决方案是使用一个标志布尔值来表示第一个元素,并在你的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";
- }