PHP比较二维数组,求大神赐教
本文介绍了PHP比较二维数组,求大神赐教的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
一个参与活动名单的二维数组
$arr1=array(
array('name'=>'张三','phone'=>'1354459845','address'=>'一街5号'),
array('name'=>'李四','phone'=>'1323439845','address'=>'一街3号'),
array('name'=>'陈五','phone'=>'1354353145','address'=>'一街2号'),
);
一个历史中奖名单的二维数组
$arr2=array(
array('name'=>'mary','phone'=>'1313598445','address'=>'一街8号'),
array('name'=>'jhon','phone'=>'1323298425','address'=>'一街9号'),
array('name'=>'陈五','phone'=>'1353dsad45','address'=>'一街10号'),
);
现在要比较这两个数组,只要名称name或phone或address其中一个在历史名单中出现过,就要把他从arr1参与活动名单中去掉。
除了两次foreach再比较以外,有什么好的方法可以快速地得出筛选后的活动名单结果。两份名单都至少几千,如果用两次foreach的话速度会很慢
解决方案
$arr = [
["name" => "李四", "phone" => '5555', "address" => 'aaa' ],
["name" => "张三", "phone" => '6666', "address" => 'bbb' ],
["name" => "老王", "phone" => '7777', "address" => 'ccc' ],
];
$filter = [
["name" => "李四", "phone" => '3333', "address" => 'xyz' ],
["name" => "王三", "phone" => '6666', "address" => 'xyz' ],
];
$arr = array_filter($arr, function($i) use ($filter) {
return !in_array($i['name'], array_column($filter, 'name')) && !in_array($i['phone'], array_column($filter, 'phone'));
});
var_dump($arr);
这篇关于PHP比较二维数组,求大神赐教的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文