例如,我有两个数组,
$arrayA = [0=>"A", 1=>"B", 2=>"C", 3=>"C", 4=>"E", 5=>"F"];
$arrayB = [0=>"B", 1=>"C"];
如果我使用array_intersect():
$same = array_intersect($arrayA, $arrayB);
我会得到$same
1 => B
2 => C
3 => C
相反,我想要实现的只是获得
1 => B
2 => C
更新
在尝试 amow 和 Ekin 提供的答案后,我意识到这种方法存在局限性。如果我的数组是以下形式,
$arrayA = [0=>"A", 1=>"B", 2=>"C", 3=>"B", 4=>"C", 5=>"E", 6=>"F"];
$arrayB = [0=>"B", 1=>"C", 2=>"B", 3=>"C"];
$same = array_unique(array_intersect($arrayA, $arrayB));
$same
的结果仍然是
1 => B,
2 => C
我希望得到
1 => B,
2 => C,
3 => B,
4 => C
答案 0 :(得分:2)
答案 1 :(得分:2)
上面的确如此,你也可以在array_unique()中包装相交。像:
$arrayA = [0=>"A", 1=>"B", 2=>"C", 3=>"C", 4=>"E", 5=>"F"];
$arrayB = [0=>"B", 1=>"C"];
$same = array_unique(array_intersect($arrayA, $arrayB));
print_r($same);
# Array ( [1] => B [2] => C )
答案 2 :(得分:0)
$arrayA = [0=>"A", 1=>"B", 2=>"C", 3=>"C", 4=>"E", 5=>"F"];
$arrayB = [0=>"B", 1=>"C"];
$result = array();
foreach ($arrayB as $key => $value) {
if($key = array_search($value, $arrayA)){
$result[$key] = $arrayA[$key];
}
}
print_r($result);
你会得到:
Array ( [1] => B [2] => C )