php两数组求差异 arrar_diff

2018-02-23 16:12:28 查看 1166 回复 0

今天看到一个技术群里讨论,取两数组差异数据!就自己试了一下。

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue","h"=>"org");

开始思路是合并去重。但是实现出来感觉不是想要的数据(得到的是一个包含所有a1,a2新数组,取差异的话还得执行下操作才行)。

然后换了个思路。

$d = [];
foreach ($a1 as $k => $t){
    if(!in_array($t,$a2)){
        $d[] = $t;
    }else{
        unset($a2[$k]);
    }

}
$d = array_merge($a2,$b);

建立临时变量,循环单个然后比对第二个是否包含,包含就在a2里删除该元素否则插入临时变量。

后面 看到一个求差函数 arrar_diff,可以更简便的实现

array_merge(array_diff($a1,$a2),array_diff($a2,$a1));

综上得出,没事的时候还得多看看手册!