【发布时间】:2021-06-25 13:41:19
【问题描述】:
最近,我在比较 2 个嵌套数组时遇到了一些问题。我已经测试过使用 array_diff_assoc 来比较 2 个数组,但它返回的结果不正确。下面是我试图在 php 中比较这两个嵌套数组的几个场景。
$arr1 = ["colorFamily"=>[]];
$arr2 = ["colorFamily"=>["blue","black"]];
$diff = array_diff_assoc($arr1,$arr2);
$diff 预计会在下面返回;
["colorFamily"=>[]]
不幸的是,它在下面返回:
[]
除此之外,还会使用更复杂的场景进行比较,例如
$arr1 = ["colorFamily"=>[],"descriptionMeasurement"=>[["label"=>"orange"],["value"=>"apple"]]];
$arr2 = ["colorFamily"=>["blue","black"],"descriptionMeasurement"=>[["label"=>"orange"]]];
以上场景,应该返回
["colorFamily"=>[],"descriptionMeasurement"=>[["label"=>"orange"]]].
简而言之,任何发生在 $arr1 中而没有发生在 $arr2 中的东西,都应该在 $diff 数组中返回。 我希望你们能帮我解决这个问题,我已经卡了好几个星期了。
【问题讨论】:
-
希望对你有帮助(看第二种方案):stackoverflow.com/questions/7389176/…
-
嗨,哈桑,我已经浏览了您提供的链接,但没有找到相关的解决方案来解决我的问题。
-
为什么会在第二个结果中出现
"descriptionMeasurement"=>[["label"=>"orange"]]?在我看来,这两个数组都一样。
标签: php algorithm recursive-datastructures