PHP使用文字键前置关联数组?

PHP使用文字键前置关联数组?,php,arrays,associative-array,Php,Arrays,Associative Array,是否可以使用文字键=>值对来前置关联数组?我知道array_unshift()可以处理数字键,但我希望能处理文字键 作为一个例子,我想做以下几点: $array1 = array('fruit3'=>'apple', 'fruit4'=>'orange'); $array2 = array('fruit1'=>'cherry', 'fruit2'=>'blueberry'); // prepend magic $resulting_array = ('fruit1'=

是否可以使用文字键=>值对来前置关联数组?我知道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');
你就不能这样做:

$resulting_array = $array2 + $array1;

@Cletus就在眼前。另外,如果输入数组中元素的顺序不明确,并且需要对最终数组进行排序,则可能需要:


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

要预加单个值,对于关联数组,请再次使用array\u merge(),而不是array\u unshift():


答案是否定的。不能用键值对作为关联数组的前缀

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

语法如下

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

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

使用与@mvpetrovich相同的方法,可以使用数组的速记版本来缩短语法

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

参考资料:

从PHP5.4开始,您还可以使用短数组语法,它将数组()替换为[]


另请参见数组_merge()及其与使用+运算符的区别:@cletus:Sheesh。是的,我能。我不知道是什么让我觉得我做不到,或者是什么以前不起作用。感谢您的回复。值得注意的是差异,但这种差异与保留数字键有关,并且此数组是一个带有字符串键的“纯”关联数组。作为后期说明,
ksort
返回布尔值,因此需要将上述语句作为两个语句而不是一个语句来执行,例如
a=$array1+$array2;k港口(a美元)
,否则,
$resulting_array
将是一个布尔值,而不是您期望的数组。“覆盖键,不保留数字键”。。。a) 联合运算符(“+”)如何处理“重复”键?回复:不保留数字键:可能需要
array_merge(array($key => $value), $myarray);
$new_array = array('new_key' => 'value') + $original_array;
$_array = array_merge(["key1" => "key_value"], $_old_array);