例如我有两个数组
$arrayA = [0=>"A", 1=>"B", 2=>"C", 3=>"C", 4=>"E", 5=>"F"];
$arrayB = [0=>"B", 1=>"C"];
$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
解决方法:
array_intersect(array_unique($arrayA),array_unique($arrayB))
希望这会有所帮助.
更新解决方案:
$arrayA = [0=>"A", 1=>"B", 2=>"C", 3=>"B", 4=>"C", 5=>"E", 6=>"F"];
$arrayB = ["B","C","B","C"];
$filter = $arrayB;
$same = [];
foreach ($arrayA as $key => $value) {
$bIndex = array_search($value, $filter);
if($bIndex !== false){
$same[$key] = $value;
unset($filter[$bIndex]);
}
}
var_dump($same);
标签:arrays,php,algorithm
来源: https://codeday.me/bug/20191026/1937708.html