如何在 PHP 数组的开头插入一个项目?

问题描述 投票:0回答:9

我知道如何将其插入到末尾:

$arr[] = $item;

但是如何将其插入到开头呢?

php arrays
9个回答
489
投票

使用 array_unshift($array, $item);

$arr = array('item2', 'item3', 'item4');
array_unshift($arr , 'item1');
print_r($arr);

会给你

Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)

154
投票

如果您不想更改数组键的关联数组或编号数组:

$firstItem = array('foo' => 'bar');

$arr = $firstItem + $arr;

array_merge
不起作用,因为它总是重新索引数组。


26
投票

PHP7.4 开始,您可以使用扩展运算符,与 JavaScript 非常相似

$arr = [$item, ...$arr];

https://wiki.php.net/rfc/spread_operator_for_array

更多例子:

// Add an item before
$arr = [$item, ...$arr];

// Add an item after
$arr = [...$arr, $item];

// Add a few more
$arr = [$item1, $item2, ...$arr, $item3];

// Multiple arrays and and items
$arr = [$item1, ...$arr1, $item2, ...$arr2, $item3];
  • 注意:这仅适用于 int 键,不适用于关联数组。
  • 注2:钥匙不保留。

破坏示例:

$car = ['brand' => 'Audi', 'model' => 'A8'];
$engine = ['cylinder' => 6, 'displacement' => '3000cc'];

$merged = [...$car, ...$engine];

var_dump($merged);

将导致:

[错误]无法使用字符串键解压数组


14
投票

对于关联数组,您可以只使用合并。

$arr = array('item2', 'item3', 'item4');
$arr = array_merge(array('item1'), $arr)

14
投票

使用字符串/自定义键关联数组

的开头插入一个项目
<?php

$array = ['keyOne'=>'valueOne', 'keyTwo'=>'valueTwo'];

$array = array_reverse($array);

$array['newKey'] = 'newValue';

$array = array_reverse($array);

结果

[
  'newKey' => 'newValue',
  'keyOne' => 'valueOne',
  'keyTwo' => 'valueTwo'
]

9
投票

使用 array_unshift() 插入数组中的第一个元素。

使用 array_shift() 删除数组的第一个元素。


7
投票

有两种解决方案:

  1. 如果您有包含对您重要的键的数组
$new = ['RLG' => array(1,2,3)];
$array = ['s' => array(2,3), 'l' => [], 'o' => [], 'e' => []];

$arrayWithNewAddedItem = array_merge($new, $array);
  1. 如果你有一个没有任何键的数组。
array_unshift(array, value1);

4
投票

或者如果你想在循环中改变它,你可以使用临时数组,然后删除真实的数组:

$array = array(0 => 'a', 1 => 'b', 2 => 'c');
$temp_array = $array[1];

unset($array[1]);
array_unshift($array , $temp_array);

输出将是:

array(0 => 'b', 1 => 'a', 2 => 'c')

当在循环中执行此操作时,您应该在将项目附加到数组后清理

$temp_array


0
投票

看看 array_replace_recursive。与 array_merge_recursive 不同,它将保留索引。

© www.soinside.com 2019 - 2024. All rights reserved.