php两数组求差异 arrar_diff
今天看到一个技术群里讨论,取两数组差异数据!就自己试了一下。
$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));
综上得出,没事的时候还得多看看手册!