我知道如何将它插入到最后:
$arr[] = $item;
但是如何把它插入到开头呢?
使用函数数组,美元项目);
$arr = array('item2', 'item3', 'item4'); array_unshift($arr , 'item1'); print_r($arr);
会给你
Array ( [0] => item1 [1] => item2 [2] => item3 [3] => item4 )
如果是一个关联数组或编号数组,你不想改变数组键:
$firstItem = array('foo' => 'bar'); $arr = $firstItem + $arr;
array_merge不起作用,因为它总是重新索引数组。
array_merge
使用函数()插入数组中的第一个元素。
使用array_shift ()删除数组的第一个元素。
或者你可以使用临时数组,然后删除真正的数组,如果你想在循环中改变它:
$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')
当你在循环中这样做时,你应该在将item添加到数组后清理$temp_array。
$temp_array
用字符串/自定义键在关联数组的开头插入一个项
<?php $array = ['keyOne'=>'valueOne', 'keyTwo'=>'valueTwo']; $array = array_reverse($array); $array['newKey'] = 'newValue'; $array = array_reverse($array);
结果
[ 'newKey' => 'newValue', 'keyOne' => 'valueOne', 'keyTwo' => 'valueTwo' ]
对于关联数组,你可以使用归并。
$arr = array('item2', 'item3', 'item4'); $arr = array_merge(array('item1'), $arr)
有两种解决方案:
$new = ['RLG' => array(1,2,3)]; $array = ['s' => array(2,3), 'l' => [], 'o' => [], 'e' => []]; $arrayWithNewAddedItem = array_merge($new, $array);
array_unshift(array, value1);
因为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];
破坏的例子:
$car = ['brand' => 'Audi', 'model' => 'A8']; $engine = ['cylinder' => 6, 'displacement' => '3000cc']; $merged = [...$car, ...$engine]; var_dump($merged);
会导致:
[错误]不能解包数组字符串键