为了账号安全,请及时绑定邮箱和手机立即绑定

求这个两个数组的差集?

求这个两个数组的差集?

慕仙森 2019-04-13 08:45:36
Array([0]=>Array([id]=>11[parametername]=>参数名称11))Array([0]=>Array([id]=>6[parametername]=>参数名称6)[1]=>Array([id]=>10[parametername]=>参数名称10)[2]=>Array([id]=>11[parametername]=>参数名称11)[3]=>Array([id]=>15[parametername]=>参数编辑)[4]=>Array([id]=>16[parametername]=>参数20))
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

$array1=array(
array('n3'=>'v3','n4'=>'v4'),
array('n1'=>'v1','n2'=>'v2')
);
$array2=array(
array('n1'=>'v1','n2'=>'v2')
);
$result=array_udiff(
$array1,
$array2,
function($v1,$v2){
returnstrcmp(serialize($v1),serialize($v2));
}
)
//或者
$result=array_filter($array1,function($v)use($array2){
returnin_array($v,$array2);
});
你可以试试。
                            
查看完整回答
反对 回复 2019-04-13
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

回调是你的好朋友。
数据:
$array1=array(
array("id"=>11,"parametername"=>"PARAMETERNAMEXI"),
array("id"=>30,"parametername"=>"PARAMETERNAMEXXX"),
);
$array2=array(
array("id"=>6,"parametername"=>"ParameterNameVI"),
array("id"=>10,"parametername"=>"ParameterNameX"),
array("id"=>11,"parametername"=>"ParameterNameXI"),
array("id"=>15,"parametername"=>"ParameterNameXV"),
array("id"=>16,"parametername"=>"ParameterNameXVI"),
);
比较代码如下:
array_udiff($array2,$array1,function($a,$b){
return($a['id']-$b['id']);
});
/*
array(
array("id"=>6,"parametername"=>"ParameterNameVI"),
array("id"=>10,"parametername"=>"ParameterNameX"),
array("id"=>15,"parametername"=>"ParameterNameXV"),
array("id"=>16,"parametername"=>"ParameterNameXVI"),
)
*/
array_udiff($array1,$array2,function($a,$b){
return($a['id']-$b['id']);
})
/*
array(
array("id"=>30,"parametername"=>"PARAMETERNAMEXXX"),
)
*/
另外我希望没理解错题意。以上代码均认为只要id相同就属于同一个数据。如果有必要自行更改回调的逻辑。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 377 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信