PHP前面加上文字键关联数组?(PHP prepend associative array with

2019-06-21 14:17发布

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

Answer 1:

你就不能这样做:

$resulting_array = $array2 + $array1;



Answer 2:

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

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

语法如下。

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

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



Answer 3:

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

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

前面加上一个值,对一个关联数组,代替array_unshift(),再次使用array_merge():

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


Answer 4:

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

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


Answer 5:

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

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

参考文献:

PHP:array_merge()

PHP:数组-手动

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



文章来源: PHP prepend associative array with literal keys?