PHP合并两个数组,改进代码

时间:2012-11-24 04:03:42

标签: php

我有以下经过测试的代码,经过几次尝试后,可以从两个合并数组中过滤出独特的结果。我之前尝试使用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返回。我最好回到我的客厅。感谢

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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));