note 34082 added to function.array-merge-recursive
| From: | bishop at rack1 dot php dot net | Date: | Tue, 15 Jul 2003 20:24:51 +0000 |
| Subject: | note 34082 added to function.array-merge-recursive | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-52151@lists.php.net to get a copy of this message | ||
Pass-by-reference and varargs version of kc at hireability dot com array_merge_clobber() function:
function array_merge_clobber(&$a1 /* ... */) {
if (! is_array($a1)) {
trigger_error('First argument to array_merge_clobber() must be an array',
E_USER_ERROR);
return false;
}
$argc = func_num_args();
for ($i = 1; $i < $argc; $i++) {
$a2 = func_get_arg($i);
if (! is_array($a2)) {
trigger_error('Argument #' . ($i+1) . ' to array_merge_clobber() is not
an array; not merged', E_USER_WARNING);
continue;
}
foreach ($a2 as $key => $val) {
if (is_array($val) && is_array($a1[$key])) {
array_merge_clobber($a1[$key], $val);
} else {
$a1[$key] = $val;
}
}
}
return true;
}
Not a drop in replacement (per se) for array_merge_recursive(), but it's got its benefits.
Call thusly:
$rc = array_merge_clobber($a1, $a2 /* , .... */);
if ($rc) {
echo 'a2 fed into a1 okay';
} else {
echo 'something went awry';
}
----
Manual Page -- http://www.php.net/manual/en/function.array-merge-recursive.php
Edit Note -- http://master.php.net/manage/user-notes.php?action=edit+34082
Delete Note -- http://master.php.net/manage/user-notes.php?action=delete+34082&report=yes
Reject Note -- http://master.php.net/manage/user-notes.php?action=reject+34082&report=yes