阵列一:
$arr1 = array(
array("uid" => "cgajate"),
array("uid" => "frankfurt9"),
array("uid" => "ricoetc")
);
数组二:
$arr2 = array(
array("uxid" => "cgajate"),
array("uxid" => "ricoetc"),
array("uxid" => "ricoetc1"),
array("uxid" => "frankfurt9"),
array("uxid" => "panterafan")
);
我有两个多维数组(如上所示,不要为id共享相同的键名,uxid vs uid)。我试图在比较'uid'和'uxid'值的基础上找到无与伦比的数组,我的预期结果是:
Array
(
[0] => Array
(
[uxid] => ricoetc1
)
[1] => Array
(
[uxid] => panterafan
)
)
下面是我的代码,我试图找到匹配的值并从结果数组中删除但是当我打印时给我空数组。
$tmpArray = array();
foreach($arr1 as $data1) {
$duplicate = false;
foreach($arr2 as $data2) {
if($data1['uid'] === $data2['uxid']) $duplicate = true;
}
if($duplicate === false) $tmpArray[] = $data1;
}
echo "<pre>", print_r($tmpArray);
答案 0 :(得分:3)
试试这个
$arr1 = array(
array("uid" => "cgajate"),
array("uid" => "frankfurt9"),
array("uid" => "ricoetc")
);
$arr2 = array(
array("uxid" => "cgajate"),
array("uxid" => "ricoetc"),
array("uxid" => "ricoetc1"),
array("uxid" => "frankfurt9"),
array("uxid" => "panterafan")
);
foreach($arr2 as $k => $v){
if (!in_array($v['uxid'], array_column($arr1, 'uid'))){
$new[] =$v;
}
}
print_r($new);
答案 1 :(得分:1)
这可以作为一个丑陋的一个班轮,我把它减半以便于阅读。如果需要,它可以更多地分解。
代码:(演示:https://3v4l.org/DrpQD)
$arr1=[
["uid"=>"cgajate"],
["uid"=>"frankfurt9"],
["uid"=>"ricoetc"]
];
$arr2=[
["uxid"=>"cgajate"],
["uxid"=>"ricoetc"],
["uxid"=>"ricoetc1"],
["uxid"=>"frankfurt9"],
["uxid"=>"panterafan"]
];
$diff2=array_diff(array_column($arr2,'uxid'),array_column($arr1,'uid'));
$result=array_map(function($v){return ['uxid'=> $v];},array_values($diff2));
var_export($result);
输出:
array (
0 =>
array (
'uxid' => 'ricoetc1',
),
1 =>
array (
'uxid' => 'panterafan',
),
)
此方法:
$arr2
中不存在的$arr1
值,*此方法不执行迭代阵列扫描。