把关联数组元素放在关联数组上

有没有可能在关联数组前面加上字面键 = > 值对?我知道 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');
69416 次浏览

你就不能:

$resulting_array = $array2 + $array1;

?

@ 克莱图斯说的没错。补充一点,如果输入数组中元素的顺序不明确,并且您需要对最终数组进行排序,那么您可能需要 Ksort:

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

在您的情况下,需要使用 array _ merge () :

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

对于一个关联数组,如果要预先设置一个值,不要使用 array _ unshift () ,再次使用 array _ merge () :

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

你不能直接用键值对预先设定关联数组。

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

语法如下。

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

注意: 不要使用 array _ merge () . array _ merge ()覆盖键并且不保留数字键。

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

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

参考文献:

PHP: array _ merge ()

PHP: 数组-手动

在 PHP 5.4中,还可以使用短数组语法,用[]替换 array ()。

如果使用 Laravel,则可以对集合实例使用 prepend

 collect(['b' => 'b', 'c' => 'c'])->prepend('a','a');


// ['a'=>'a', 'b' => 'b', 'c' => 'c']

Https://laravel.com/docs/9.x/collections#method-prepend