0

我有以下经过测试的代码,经过几次尝试后,我可以从两个合并的数组中过滤出唯一的结果。我之前尝试使用 array_diff、array_diff_key、array_diff_assoc 无济于事,直到我解决了以下问题。

  • 第二个需要首先使用 array_filter 排除空值(如 0),否则空值(“red”=>“0”)也会打印在合并结果中,这是不期望的。
  • array_unique 从合并中删除重复项。

所以以下内容按预期工作,但我想知道代码是否有任何改进,看起来有点像绕圈子。我的意思是我不确定代码是否正确完成:

$array1 = array("a" => "green", "b" => "purple", "blue" => "0");
$array2 = array("a" => "0", "b" => "purple", "blue" => "blue", "red" => "0");

$merge  = array_unique(array_merge($array1, array_values(array_filter($array2))));

非常感谢任何改进。谢谢

更新:对不起,我在要求的后期发展,后来我意识到我也应该考虑用array2替换第一个array1,即使当两者都存在对时返回NULL。我最好回到我的客厅。谢谢

4

2 回答 2

2

我知道你到底想要什么,但根据你的代码结果,我猜这个或类似的东西对你有用。

$merge = $array1 + array_filter($array2);

于 2012-11-24T05:52:07.030 回答
1

您的代码也是从 array1 写入空值

无需使用 array_unique,因为 array_merge 会自动删除合并重复值

$array1 = array("a" => "green", "b" => "purple", "blue" => "0");
$array2 = array("a" => "0", "b" => "purple", "blue" => "blue", "red" => "0");
$merge = array_merge($array1, array_filter($array2));

于 2012-11-24T04:28:35.093 回答