note 92985 added to function.array-merge-recursive
| From: | dom111 dot co dot uk at osu1 dot php dot net | Date: | Tue, 18 Aug 2009 12:44:16 +0000 |
| Subject: | note 92985 added to function.array-merge-recursive | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-159591@lists.php.net to get a copy of this message | ||
I thought I'd have a go at the array_merge_recursive_distinct() function myself.
Allows variable number of arguments!
<?php
/**
* array_merge_recursive_distinct
*
* Recursively process an array merge all child nodes together
*
* @return array
* @author Dom Hastings
*/
function array_merge_recursive_distinct() {
switch (func_num_args()) {
case 0:
return array();
break;
case 1:
return (array) func_get_arg(0);
break;
default:
$a = func_get_args();
$s = (array) array_shift($a);
foreach ($a as $i => $b) {
if (!is_array($b)) {
$b = (array) $b;
}
foreach ($b as $k => $v) {
if (is_numeric($k)) {
$s[] = $v;
} else {
if (isset($s[$k])) {
if (is_array($s[$k]) && is_array($v)) {
$s[$k] = array_merge_recursive_distinct($s[$k], $v);
} else {
$s[$k] = $v;
}
} else {
$s[$k] = $v;
}
}
}
}
break;
}
return $s;
}
?>
----
Server IP: 64.71.164.2
Probable Submitter: 82.71.106.9
----
Manual Page -- http://www.php.net/manual/en/function.array-merge-recursive.php
Edit -- https://master.php.net/note/edit/92985
Del: integrated -- https://master.php.net/note/delete/92985/integrated
Del: useless -- https://master.php.net/note/delete/92985/useless
Del: bad code -- https://master.php.net/note/delete/92985/bad+code
Del: spam -- https://master.php.net/note/delete/92985/spam
Del: non-english -- https://master.php.net/note/delete/92985/non-english
Del: in docs -- https://master.php.net/note/delete/92985/in+docs
Del: other reasons-- https://master.php.net/note/delete/92985
Reject -- https://master.php.net/note/reject/92985
Search -- https://master.php.net/manage/user-notes.php