繁体   English   中英

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

[英]Sort an array based on order of another array

我有两个数组:

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

可能不是分类工作。 array_intersect()将返回项目$arr_a是在$arr_b的顺序,他们在$arr_a

$arr_b = array_intersect($arr_a, $arr_b);

如果您需要重新编制索引,则之后只需使用array_values()

我想这就是您想要的,但是您的问题不太清楚。

$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"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM