我正在寻找一些工具来给我两个数组的递归差异。我设想的是一个带有两个颜色编码的树结构的网页。在每棵树上,绿色是数组中两个数组都匹配的部分,红色是每个数组中彼此不匹配的部分。像dBug的输出
我有一些代码,使我有一个嵌套的数组来填充报告。我正在开发应该更快的新方法,但是我需要测试值和结构,以确保其输出与旧方法相同。
有什么我可以使用的东西吗?还是我需要写这个?还是有其他方法可以实现我的目标?
在array_diff的注释中实现了一个这样的功能。
function arrayRecursiveDiff($aArray1, $aArray2) { $aReturn = array(); foreach ($aArray1 as $mKey => $mValue) { if (array_key_exists($mKey, $aArray2)) { if (is_array($mValue)) { $aRecursiveDiff = arrayRecursiveDiff($mValue, $aArray2[$mKey]); if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff; } } else { if ($mValue != $aArray2[$mKey]) { $aReturn[$mKey] = $mValue; } } } else { $aReturn[$mKey] = $mValue; } } return $aReturn; }
该实现一次只能处理两个数组,但是我认为这并不是一个真正的问题。如果一次需要3个或更多阵列的差异,则可以顺序运行差异。同样,此方法使用密钥检查并进行宽松的验证。