php array_multisort多维数组排序
最近遇到一个二维数组排序的问题。
假设有以下数组
$arr = [
['a'=>'hello','b'=>1],
['a'=>'hello','b'=>2],
['a'=>'hello','b'=>3],
['a'=>'hello','b'=>6],
['a'=>'hello','b'=>345],
['a'=>'hello','b'=>45],
['a'=>'hello','b'=>768],
['a'=>'hello','b'=>234],
['a'=>'hello','b'=>23],
['a'=>'hello','b'=>55],
['a'=>'hello','b'=>134],
];
我第一反应是写两层for循环进行遍历,但是想了想,世界上最好的语言怎么可能这点功能都没有呢?就按照我的脑海里面的思路核实到了写回调这个情况。
但是查询文档发现它不适合,因为它就相当于一个数组的遍历,只是再遍历完每一个子项的时候会将这个子项传递到我们设置的函数里面,很显然,这样的话和我写两层for循环一样的道理,不划算。
进一步查询文档后发现了 array_multisort 这个方法,但是发现我看不懂,因为我不知道第一个参数是用来做什么的。传递怎么的数据比较合适。
实际上是说的太直白的了,我看不懂


继续往下看官方文档发现有个示例


我获得某个序列(数组),然后中间的 SORT_DESC 是一个排序的方式。
这里我理解为,将前面的这个序列按照升序或降序进行排列后。然后将我们的二维数组按照我们排序好的序列进行排序。
到了这里我们就是需要获取前面的序列数组了。获取方法如下
$col = array_column($arr,'b');
array_column 可以获取指定列的值

接下来只要拼接起来进行输出就可以了
// 降序
array_multisort($col,SORT_DESC,$arr);
// 输出
foreach($arr as $k=>$v){
print_r($v);
echo "<hr>";
}

相关推荐
php关于array_multisort多维数组排序的使用说明
一、先看最简单的情况。有两个数组: 复制代码 代码如下: $arr1 = array(1,9,5); $arr2 = array(6,2,4); array_multisort($arr1,$arr2); print_r($arr1); // 得到的顺序是1,5,9 print_r($arr2); // 得到的顺序是6,4,2 我估计两个数组的值自始至终都是对应着的:1对应6,9对应2,5对应4。 我们再加多一个数组看看会怎样: 复制代码 代码如下: $arr1 = array(1,9,5); $arr2 = array(6,2,4); $arr3 = array(3,7,8); array
使用PHP的array_multisort函数对多维数组进行排序
通过传递一个或多个排序规则,我们可以对数组的值进行排序,并保持多个数组之间的关联性。它可以根据一个或多个排序规则对数组的值进行排序,并且可以同时对多个数组进行排序,以保持它们之间的关联。array_multisort函数的工作原理是,它首先根据第一个数组排序规则对数组进行排序,然后根据第二个数组排序规则对排序结果进行排序,依此类推。如果有多个数组需要排序,它们会按照参数的顺序进行排序。它不仅可以对单个数组进行排序,还可以通过指定多个排序规则,同时对多个数组进行排序,从而保持它们之间的关联性。
PHP使用array_multisort对多个数组或多维数组进行排序
主要介绍了PHP使用array_multisort对多个数组或多维数组进行排序,需要的朋友可以参考下
php中array_multisort对多维数组排序的方法
本文实例讲述了php中array_multisort对多维数组排序的方法。分享给大家供大家参考。具体实现方法如下: function sort_array($array, $keyid, $order='asc', $type='number') { if(is_array($array)) { foreach($array as $val) { $order_arr[] = $val[$keyid]; } $order = ($order == 'asc') ? SORT_ASC: SORT_DESC; $type = ($type == 'number') ? S
array_multisort实现PHP多维数组排序示例讲解
array_multisort — 对多个数组或多维数组进行排序 说明 bool array_multisort ( array ar1 [, mixed arg [, mixed … [, array …]]] ) array_multisort (PHP 4, PHP 5) 如果成功则返回 TRUE,失败则返回 FALSE。 array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 关联(string)键名保持不变,但数字键名会被重新索引。 输入数组被当成一个表的列并以行来排序――这类似于 SQL 的 ORDER BY 子句的功能。第一个


