根据另一个数组的顺序对数组进行排序

时间:2015-12-03 16:12:28

标签: php sorting

我有两个数组:

$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数组中的键实际上是无关紧要的。

2 个答案:

答案 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"
}