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

问题描述 投票:104回答:5

是否有可能在前面加上文字键=>值对的关联数组?我知道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');
php arrays associative-array
5个回答
203
投票

你就不能这样做:

$resulting_array = $array2 + $array1;

?


27
投票

答案是不。你不能在前面加上一个键值对的关联数组。

然而,你可以创建一个包含在与工会运营商+数组的开始新的键值对新的数组。结果是虽然一个全新的阵列并创建新的阵列具有O(N)的复杂性。

语法如下。

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

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


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);

5
投票

@Cletus是即期。我想补充,如果输入数组中元素的顺序是含糊的,你需要的最后一个数组进行排序,您可能希望ksort

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

1
投票

用同样的方法@mvpetrovich,你可以使用数组的简写缩短语法。

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

参考文献:

PHP: array_merge()

PHP: Arrays - Manual

作为PHP 5.4的也可以使用短数组语法,它取代有[]数组()。

© www.soinside.com 2019 - 2024. All rights reserved.