PHP在关联数组前加上文字键吗?

时间:2009-09-03 01:28:23

标签: php arrays associative-array

是否可以在文字键=>值对前添加关联数组?我知道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');

5 个答案:

答案 0 :(得分:196)

你不能这样做:

$resulting_array = $array2 + $array1;

答案 1 :(得分:26)

答案是否定的。您不能在关键数组前添加键值对。

但是,您可以使用union运算符+创建一个新数组,该数组在数组的开头包含新的键值对。结果是一个全新的数组,并且创建新数组具有O(n)复杂性。

语法如下。

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

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

答案 2 :(得分:16)

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

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

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

array_merge(array($key => $value), $myarray);

答案 3 :(得分:5)

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

$resulting_array = $array1 + $array2;
ksort($resulting_array);

答案 4 :(得分:0)

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

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

参考文献:

PHP: array_merge()

PHP: Arrays - Manual

  

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