我正在尝试添加两个多维数组。该函数应该与将数组添加在一起的方式完全相同,如下所示:$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
将两者加在一起(如 $user_array + $default_array)应该给我:
array (size=4)
'something' => int 1000
'nested' =>
array (size=3)
'a' => 1
'b' => null
'c' => null
'new' => int 4
目前,如果我添加两个多维数组,覆盖功能似乎只适用于第一个数组维度。这意味着在这种情况下,'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”。我不太确定如何解决这个问题。