除第一个之外,获取数组中的所有元素..?(PHP)

Roe*_*and 20 php arrays coding-style

有没有办法指定除了数组中的第一个元素之外的所有元素?我通常使用foreach()来遍历我的数组.

说数组(1,2,3,4,5),我只想要2,3,4,5显示并跳过1.

And*_*ore 29

有多种方法可以解决这个问题.

第一种解决方案是使用标志布尔来指示第一个元素并继续进行 foreach

$firstElement = true;

foreach($array as $key => $val) {
  if($firstElement) {
    $firstElement = false;
  } else {
    echo "$key => $val\n";
  }
}
Run Code Online (Sandbox Code Playgroud)

如果你的元素是自然数字索引的,你不需要布尔标志,你可以简单地检查键是否为0.

foreach($array as $key => $val) {
  if($key === 0) continue;      

  echo "$key => $val\n";
}
Run Code Online (Sandbox Code Playgroud)

第二种方法是欺骗你的方式进入一个自然数字索引的数组,如果它还没有.我将使用array_keys()一个自然数字索引的键数组并循环它.

$keys = array_keys($array);

foreach($keys as $index => $key) {
  if($index === 0) continue;   

  $val = $array[$key];
  echo "$key => $val\n";
}
Run Code Online (Sandbox Code Playgroud)

第三种方法是使用阵列内部指针以跳过所述第一元件,然后通过使用继续在一个循环中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";
}  
Run Code Online (Sandbox Code Playgroud)

如果您不介意丢失数组的第一个元素,那么就可以array_shift()了.

array_shift($array);

foreach($array as $key => $val) {
  echo "$key => $val\n";
}
Run Code Online (Sandbox Code Playgroud)

你也可以array_slice()在阵列中.我也在使用count(),以便能够将preserve_keys参数设置为true.

$sliced = array_slice($array, 1, count($array)-1, true);

foreach($sliced as $key => $val) {
  echo "$key => $val\n";
}
Run Code Online (Sandbox Code Playgroud)


mic*_*man 24

$arr = array(1,2,3,4,5);
$all_but_the_first_element_array = array_slice($arr, 1);
Run Code Online (Sandbox Code Playgroud)

  • 好极了!array_shift()的不变版本! (2认同)

san*_*osc 10

array_shift()

http://us2.php.net/manual/en/function.array-shift.php

网站中使用的示例:

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
?> 
Run Code Online (Sandbox Code Playgroud)

上面的例子将输出:

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
)
Run Code Online (Sandbox Code Playgroud)

**记住在移位后重置(新值)指向数组的指针

  • 变异原始数组,丑陋:( (2认同)