获取数组中除第一个元素之外的所有元素。?(php)

2022-08-30 14:43:00

有没有办法指定获取数组中除第一个元素之外的所有元素?我通常使用foreach()来循环我的数组。

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


答案 1
$arr = array(1,2,3,4,5);
$all_but_the_first_element_array = array_slice($arr, 1);

答案 2

有多种方法可以解决此问题。

第一种解决方案是使用标志布尔值来指示第一个元素,然后在您的前言中继续

$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";
}