2 つの多次元配列を追加しようとしています。この関数は、次のように配列を一緒に追加するのとまったく同じである必要があります: $new_array = $array1 + $array2, ただし、多次元配列で機能する必要があります。これは、$array2 が既存のキー値を上書きしてはならないことを意味します。
例: 次の $default_array があるとします。
array
'something' => int 0
'nested' =>
array (size=3)
'a' => null
'b' => null
'c' => null
そして、次の $user_array:
array
'something' => int 1000
'nested' =>
array (size=3)
'a' => 1
'new' => int 4
2 つを一緒に追加すると ($user_array + $default_array のように)、次のようになります。
array (size=4)
'something' => int 1000
'nested' =>
array (size=3)
'a' => 1
'b' => null
'c' => null
'new' => int 4
現在、2 つの多次元配列を追加すると、上書き機能は配列の最初の次元にのみ適用されるようです。これは、この場合、'nested' が $user_array に既に存在するため、他の値を追加しないことを意味します。
編集:これは、無制限の量のディメンションで機能する必要があることにも言及する必要があります。
編集 2: Rain の回答を適用しようとしましたが、意図したとおりに機能しません。まず、「未定義のインデックス」通知が表示されます。第二に、出力は私が望んでいたものではありません。次の配列を検討してください。
$default = array(
'a' => array(
'a' => 'a',
'b' => 'b',
'c' => 'c',
),
);
$user = array(
'b' => 1,
'a' => array(
'b' => 'something',
'c' => 'something else',
'd' => 'd',
),
'c' => 2);
Rain の関数で得られる出力は次のとおりです。
array (size=3)
'a' =>
array (size=3)
'a' => string 'a' (length=1)
'b' => string 'b' (length=1)
'c' => string 'c' (length=1)
'b' => int 1
'c' => int 2
この例では、サブ配列内の 'b' および 'c' キーは、それぞれ 'something' および 'something else' である必要があります。それを修正する方法がよくわかりません。