方法一:
//二维数组排序
//$arr 二维数组
//$keys 排序的键值
//$order 1是降序,0是升序
function array_sort($arr, $keys, $order = 0)
{
if (!is_array($arr)) {
return $arr;
}
$keys_value = [];
foreach ($arr as $key => $val) {
$keys_value[$key] = $val[$keys];
}
if ($order == 0) {
asort($keys_value);
} else {
arsort($keys_value);
}
reset($keys_value);
$keysort = [];
foreach ($keys_value as $key => $vals) {
$keysort[$key] = $key;
}
$new_array = [];
foreach ($keysort as $key => $val) {
$new_array[$key] = $arr[$val];
//不需要保留键值
//$new_array[] = $arr[$val];
}
return $new_array;
}
方法二:
/**
* 二维数组排序(改变原值)
*
* @param array $data 二维数据
* @param string $field 要排序的key名
* @param string $sort asc升序,desc降序
*/
function sortList(&$data, $field, $sort = 'asc')
{
usort($data, function ($a, $b) use ($field, $sort) {
//不排序
/*if ($a[$field] == $b[$field]) {
echo $a[$field] . '-' . $b[$field] . "\r\n";
return 0;
}*/
if ($sort == 'asc') {
//升序
return ($a[$field] < $b[$field]) ? -1 : 1;
} else {
//降序
return ($a[$field] > $b[$field]) ? -1 : 1;
}
});
}
方法三: 利用Laravel的集合(Collection) 内置函数排序
$arr = [
['name' => 'Desk', 'price' => 200],
['name' => 'Chair', 'price' => 100],
['name' => 'Bookcase', 'price' => 150],
];
$collection = collect($arr);
$sorted = $collection->sortBy('price')->toArray(); // asc
$sorted = $collection->sortByDesc('price')->toArray(); //desc
方法四 :
$arr = [
['name' => 'Desk', 'price' => 200],
['name' => 'Chair', 'price' => 100],
['name' => 'Bookcase', 'price' => 150],
];
//SORT_ASC | SORT_DESC
array_multisort(array_column($arr, 'price'), SORT_ASC, $arr);
var_dump($arr);