我有这个选项数组,内部数组的某些值是“ID”
[options] => Array (
[0] => Array (
[id] => 1088
[label] => John
)
[1] => Array (
[id] => 1089
[label] => Peter
)
[2] => Array (
[id] => 1050
[label] => Mary
)
....
另一方面,我有这个数组:
$array_sort = array(1089, 1050, 1088, ...);
我希望第一个数组的options数组基于$array_sort
进行排序(查看“id”)。
我知道如何以非常脏的方式(有很多循环和临时数组)这样做,但我想有一些smart_ *函数的智能解决方案来做到这一点。
谢谢!
答案 0 :(得分:1)
您可以使用array_filter将选项限制为仅排序数组中的选项,然后usort根据$array_sort
数组中使用array_search数组的位置对其进行排序:
$sorted = array_filter($options, function($arr) use($array_sort) {
return in_array($arr['id'], $array_sort);
});
usort($sorted, function($a, $b) use($array_sort) {
return array_search($a['id'], $array_sort) - array_search($b['id'], $array_sort);
});
// $sorted should now be the sorted array