122

是否可以在关联数组之前添加文字键 => 值对?我知道 array_unshift() 可以与数字键一起使用,但我希望有一些可以与文字键一起使用的东西。

作为一个例子,我想做以下事情:

$array1 = array('fruit3'=>'apple', 'fruit4'=>'orange');
$array2 = array('fruit1'=>'cherry', 'fruit2'=>'blueberry');

// prepend magic

$resulting_array = ('fruit1'=>'cherry', 
                    'fruit2'=>'blueberry', 
                    'fruit3'=>'apple', 
                    'fruit4'=>'orange');
4

5 回答 5

239

你不能这样做:

$resulting_array = $array2 + $array1;

?

于 2009-09-03T01:29:35.953 回答
35

您不能直接在关联数组前面加上键值对。

但是,您可以使用联合运算符在数组的开头创建一个包含新键值对的新数组+。结果是一个全新的数组,创建新数组的复杂度为 O(n)。

语法如下。

$new_array = array('new_key' => 'value') + $original_array;

注意:不要使用 array_merge()。array_merge() 覆盖键并且不保留数字键。

于 2015-03-23T18:47:54.433 回答
19

在您的情况下,您想使用 array_merge():

array_merge(array('fruit1'=>'cherry', 'fruit2'=>'blueberry'), array('fruit3'=>'apple', 'fruit4'=>'orange'));

要为关联数组添加单个值,而不是 array_unshift(),再次使用 array_merge():

array_merge(array($key => $value), $myarray);
于 2012-08-25T17:52:00.413 回答
6

使用与@mvpetrovich 相同的方法,您可以使用数组的简写版本来缩短语法。

$_array = array_merge(["key1" => "key_value"], $_old_array);

参考:

PHP:数组合并()

PHP:数组 - 手册

从 PHP 5.4 开始,您还可以使用短数组语法,它将 array() 替换为 []。

于 2019-02-04T11:44:18.283 回答
5

@Cletus 很到位。补充一点,如果输入数组中元素的顺序不明确,并且您需要对最终数组进行排序,则可能需要ksort

$resulting_array = $array1 + $array2;
ksort($resulting_array);
于 2009-09-03T01:33:29.367 回答