note 118727 added to function.array-merge-recursive
| From: | fantomx1 at gmail dot com | Date: | Tue, 26 Jan 2016 23:35:50 +0000 |
| Subject: | note 118727 added to function.array-merge-recursive | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-204774@lists.php.net to get a copy of this message | ||
I little bit improved daniel's and gabriel's contribution to behave more like original
array_merge function to append numeric keys instead of overwriting them and added usefull option of
specifying which elements to merge as you more often than not need to merge only specific part of
array tree, and some parts of array just need to let overwrite previous. By specifying helper
element mergeWithParent=true, that section of array will be merged, otherwise latter array part
will override former. First level of array behave as classic array_merge.
function array_merge_recursive_distinct ( array &$array1, array &$array2 )
{
static $level=0;
$merged = [];
if (!empty($array2["mergeWithParent"]) || $level == 0) {
$merged = $array1;
}
foreach ( $array2 as $key => &$value )
{
if (is_numeric($key)) {
$merged [] = $value;
} else {
$merged[$key] = $value;
}
if ( is_array ( $value ) && isset ( $array1 [$key] ) && is_array (
$array1 [$key] )
) {
$level++;
$merged [$key] = array_merge_recursive_distinct($array1 [$key], $value);
$level--;
}
}
unset($merged["mergeWithParent"]);
return $merged;
}
----
Server IP: 72.52.91.14
Probable Submitter: 188.167.160.94
----
Manual Page -- http://php.net/manual/en/function.array-merge-recursive.php
Edit -- https://master.php.net/note/edit/118727
Del: integrated -- https://master.php.net/note/delete/118727/integrated
Del: useless -- https://master.php.net/note/delete/118727/useless
Del: bad code -- https://master.php.net/note/delete/118727/bad+code
Del: spam -- https://master.php.net/note/delete/118727/spam
Del: non-english -- https://master.php.net/note/delete/118727/non-english
Del: in docs -- https://master.php.net/note/delete/118727/in+docs
Del: other reasons-- https://master.php.net/note/delete/118727
Reject -- https://master.php.net/note/reject/118727
Search -- https://master.php.net/manage/user-notes.php