note 42663 added to function.array-merge-recursive
| From: | brian at vermonster dot com | Date: | Tue, 25 May 2004 18:44:21 +0000 |
| Subject: | note 42663 added to function.array-merge-recursive | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-70076@lists.php.net to get a copy of this message | ||
Here is a fairly simple function that replaces while recursing.
<?php
/**
* array_merge_recursive2()
*
* Similar to array_merge_recursive but keyed-valued are always overwritten.
* Priority goes to the 2nd array.
*
* @static yes
* @public yes
* @param $paArray1 array
* @param $paArray2 array
* @return array
*/
function array_merge_recursive2($paArray1, $paArray2)
{
if (!is_array($paArray1) or !is_array($paArray2)) { return $paArray2; }
foreach ($paArray2 AS $sKey2 => $sValue2)
{
$paArray1[$sKey2] = array_merge_recursive2(@$paArray1[$sKey2], $sValue2);
}
return $paArray1;
}
?>
Examples:
<?php
$array1 = array(
'liquids' => array(
'water' => array('cold', 'fizzy', 'clean')
,'beer' => 'warm'
)
);
$array2 = array(
'liquids' => array(
'water' => 'hot'
,'milk' => 'wet'
)
);
$result1 = array_merge_recursive2($array1, $array2);
$result2 = array_merge_recursive2($array2, $array1);
?>
Result 1 is:
Array
(
[liquids] => Array
(
[water] => hot
[beer] => warm
[milk] => wet
)
)
Result 2 is:
Array
(
[liquids] => Array
(
[water] => Array
(
[0] => cold
[1] => fizzy
[2] => clean
)
[milk] => wet
[beer] => warm
)
)
----
Manual Page -- http://www.php.net/manual/en/function.array-merge-recursive.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+42663
Delete -- http://master.php.net/manage/user-notes.php?action=delete+42663&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+42663&report=yes
Search -- http://master.php.net/manage/user-notes.php