note 108917 modified in function.array-diff-key by danbrown

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

« previous php.notes (#188402) next »