我想在2个多维数组上应用 array_diff_key()递归,并找出它们之间的区别。
重要的是该功能将是“双向”,因此 foo($ a,$ b)和 foo($ b,$ a)< / strong>将产生相同的结果。
我试过了什么?说实话,我尝试了很多东西(包括来自http://php.net/manual/en/function.array-diff-key.php的例子)并迷失了。
function superMatch($a1, $a2) {
foreach($a1 as $k => $v) {
$r[$k] = is_array($v) ? superMatch($a1[$k], $a2[$k]) : array_diff_key($a1, $a2);
}
return $r;
}
输入:
$a = array('a' => 'a', 'b' => 'b', 'c' => array('d' => 'd', 'e' => 'e'));
$a = array('a' => 'a', 'b' => 'b', 'c' => array('t' => 'd', 'e' => 'e'));
预期输出:'t'
有人可以给我一个线索吗?
答案 0 :(得分:1)
你声明你想要双向递归的键的递归差异,所以给出你的输入:
'starting point- array with 8 elements
Dim arrStart(8) As Double
arrStart(8) = 1 'here- for testing with Local window
'passing array to another...Variant type variable
'no array declaration required
Dim arrVariant As Variant
arrVariant = arrStart
'passing array to another Double variable
'dynamic array declaration required
Dim arrEmpty() As Double
arrEmpty = arrStart
你应该得到输出:
$a = array('a' => 'a', 'b' => 'b', 'c' => array('d' => 'd', 'e' => 'e'));
$b = array('a' => 'a', 'b' => 'b', 'c' => array('t' => 'd', 'e' => 'e'));
以下方法将返回输出的第一个版本。但是,你在你的问题中说,它应该只输出$output = array('c'=>array('d'=>'d','t'=>'d'));
//or
$output = array('t'=>'d','d'=>'d');
,这是没有意义的,因为它不可能双向工作(因为键t
也不匹配)。
d
哦,这是你的小例子输入的example of it working。