note 108917 modified in function.array-diff-key by danbrown
| From: | danbrown@php.net | Date: | Mon, 04 Jun 2012 18:01:15 +0000 |
| Subject: | note 108917 modified in function.array-diff-key by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-188402@lists.php.net to get a copy of this message | ||
else one recursive variation. <?php $a =
['one' => 0, 'two' => ['y'
=> 0, 'x' => ['e' => 0, 'a'
=> 0]]]; $b = ['one' => 0, 'two'
=> ['y' => 0, 'x' => ['e'
=> 0, 'g' => 0]]]; function
array_diff_key_recursive($a1, $a2) { 	if (is_array($a2))
{ 		$r = array_diff_key($a1,
$a2); 	} 	else
{ 		return
$a1;	 	} 	 	foreach($a1
as $k => $v) { 		if (is_array($v))
{ 			$r[$k] = array_diff_key_recursive($a1[$k],
$a2[$k]); 			if (is_array($r[$k]) &&
count($r[$k])==0)
unset($r[$k]); 		} 	} 	return
$r; } ?>
--was--
else one recursive variation.
$a = ['one' => 0, 'two' => ['y' => 0, 'x' =>
['e' => 0, 'a' => 0]]];
$b = ['one' => 0, 'two' => ['y' => 0, 'x' =>
['e' => 0, 'g' => 0]]];
function array_diff_key_recursive($a1, $a2) {
if (is_array($a2)) {
$r = array_diff_key($a1, $a2);
}
else {
return $a1;
}
foreach($a1 as $k => $v) {
if (is_array($v)) {
$r[$k] = array_diff_key_recursive($a1[$k], $a2[$k]);
if (is_array($r[$k]) && count($r[$k])==0) unset($r[$k]);
}
}
return $r;
}
http://php.net/manual/en/function.array-diff-key.php