考慮兩個數組:
<?php
$test1 = array(array('a','b','c'), 'a', 'b');
$test2 = array(array('d','e'), 'c');
?>
同時使用覆蓋合併,你會希望得到的結果是一個數組:
<?php $test3 = array(array('d','e'), 'c', 'b'); ?>
然而,大多數的功能會導致與此陣:
所以,這裏是做一個函數:
<?php
function array_merge_overwrite(array &$array1, array $array2 = NULL)
{
$flag = true;
foreach (array_keys($array2) as $key)
{
if (isset($array2[$key]) && is_array($array2[$key]))
{
if (isset($array1[$key]) && is_array($array1[$key]))
array_merge_overwrite($array1[$key], $array2[$key]);
else
$array1[$key] = $array2[$key];
$flag = false;
}
}
if ($flag == true)
$array1 = $array2;
}
?>
這似乎是默認行爲。您可能需要使用'array_walk_recursive()'或其他一些UDF編寫自己的代碼來執行您描述的邏輯。 –
我有疑問,如果第二個數組保存** [p] [q] [c] [d] **這種類型的數據呢?什麼是預期的輸出? –
請向我們展示您的代碼以及實際的輸入和輸出。 –