我有两个数组:
$arr_a = ['A', 'F', 'C', 'D', 'E', 'B'];
$arr_b = ['D', 'A', 'F'];
,我需要一个值为$ arr_b的数组,该数组按$ arr_a排序,如下所示:
array(3) {[0]=>string(1) "A", [1]=>string(1) "F", [2]=>string(1) "D"}
最好的方法是什么?
PS。 $ arr_b中的所有条目都出现在$ arr_a中,$ arr_b中没有双重条目,而resultin数组中的键实际上是无关紧要的。
答案 0 :(得分:3)
可能不是排序工作。 array_intersect()
会按照$arr_a
中$arr_b
的顺序返回$arr_a
中的项目:
$arr_b = array_intersect($arr_a, $arr_b);
如果您需要重新编制索引,请稍后再使用array_values()
。
答案 1 :(得分:2)
这是我认为你想要的,但你的问题不太清楚。
$result = array_filter($arr_a, function($item) use($arr_b){
return in_array($item, $arr_b);
});
结果是
array(3) {
[0] = string(1) "A"
[1] = string(1) "F"
[3] = string(1) "D"
}