我知道如何将它插入到最后:

$arr[] = $item;

但是如何把它插入到开头呢?


当前回答

在带有字符串/自定义键的关联数组的开头插入一个项

<?php

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

$array = array_reverse($array);

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

$array = array_reverse($array);

结果

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

其他回答

在带有字符串/自定义键的关联数组的开头插入一个项

<?php

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

$array = array_reverse($array);

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

$array = array_reverse($array);

结果

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

有两种解决方案:

如果数组的键对你很重要

$new = ['RLG' => array(1,2,3)];
$array = ['s' => array(2,3), 'l' => [], 'o' => [], 'e' => []];

$arrayWithNewAddedItem = array_merge($new, $array);

如果你有一个没有任何键的数组。

array_unshift(array, value1);

使用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
)

从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);

会导致:

[错误]不能解包数组字符串键

对于关联数组,你可以使用归并。

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