有没有一种方法可以指定获取数组中除第一个元素之外的所有元素?我通常使用foreach()遍历我的数组。
比如说数组(1,2,3,4,5),我只想显示2、3、4和5,而跳过1。
有没有一种方法可以指定获取数组中除第一个元素之外的所有元素?我通常使用foreach()遍历我的数组。
比如说数组(1,2,3,4,5),我只想显示2、3、4和5,而跳过1。
$arr = array(1,2,3,4,5);
$all_but_the_first_element_array = array_slice($arr, 1);
解决这个问题的方法有多种。
第一种解决方法是使用标志变量来表示第一个元素,然后在你的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";
}
__::rest(array(1,2,3,4,5))
,它会给你array(2,3,4,5)
。使用起来非常简单。 - gthuoarray_slice()
函数时将第三个参数设置为 null
,以便使用 preserve_keys
选项而无需计算所需的长度。 - M Somervillearray_shift()
https://www.php.net/manual/en/function.array-shift.php
网站中使用的示例:
<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
?>
Array
(
[0] => banana
[1] => apple
[2] => raspberry
)
嗯,有很多方法可以做到这一点,因为我们有很多数组操作函数可用。然而,我使用以下方法:
$orig_array = array(1, 2, 3, 4 ,5);
array_shift($orig_array);
print_r($orig_array);