/**
* 对二维数组根据指定的顺序排序
* @param array $sortArray
* @param array $data
* @param string $key
*/
function arraySortByCustom(array $sort_array, array &$data, string $key)
{
usort($data, function ($a, $b) use ($sort_array, $key) {
$pos_a = array_search($a[$key], $sort_array);
$pos_b = array_search($b[$key], $sort_array);
return $pos_a - $pos_b;
});
}
$sort_Array = array(3452342, 5867867, 7867867, 1231233);
$array = array(
array('id' => 9000, 'title' => 9000),
array('id' => 7867867, 'title' => 'Some Title'),
array('id' => 9001, 'title' => 9000),
array('id' => 3452342, 'title' => 'Some Title'),
array('id' => 1231233, 'title' => 'Some Title'),
array('id' => 5867867, 'title' => 'Some Title'),
array('id' => 1231233, 'title' => 'dierge'),
);
arraySortByCustom($sort_array, $array, 'id');
var_dump($array);
需要排序的数组会按照输入的排序数组顺序重新排序
- 排序的字段在二维数组中出现多条时,在按照顺序排序的同时,相同的几条数据的顺序不变。
- 二维数组中存在排序数组中不存在的值,这些数据将会排在开头,顺序为原顺序。
网友评论