note 118727 added to function.array-merge-recursive

From: 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

« previous php.notes (#204774) next »