122

リテラルのキー=>値のペアを連想配列の先頭に追加することは可能ですか? 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');
4

5 に答える 5

239

あなたはただできませんか:

$resulting_array = $array2 + $array1;

?

于 2009-09-03T01:29:35.953 に答える
35

キーと値のペアを連想配列の先頭に直接追加することはできません。

ただし、ユニオン演算子を使用して、配列の先頭に新しいキーと値のペアを含む新しい配列を作成できます+。ただし、結果はまったく新しい配列であり、新しい配列の作成には O(n) の複雑さがあります。

構文は次のとおりです。

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

注: array_merge() は使用しないでください。array_merge() はキーを上書きし、数値キーを保持しません。

于 2015-03-23T18:47:54.433 に答える
19

あなたの状況では、array_merge()を使用したいと思います:

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

array_unshift()の代わりに、連想配列の単一の値を付加するには、再度array_merge()を使用します。

array_merge(array($key => $value), $myarray);
于 2012-08-25T17:52:00.413 に答える
5

@クレタスはスポットです。追加するだけで、入力配列内の要素の順序があいまいで、最終的な配列をソートする必要がある場合は、ksortが必要になる場合があります。

$resulting_array = $array1 + $array2;
ksort($resulting_array);
于 2009-09-03T01:33:29.367 に答える