此文章转发自:https://blog.csdn.net/qq5201314wx/article/details/121612335
对于二维数组 PHP 没有目前函数可以直接解决
可以利用下面二个函数对二维数组以某个字段排序
1.array_column () 返回输入数组中某个单一列的值。
2.array_multisort () 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。
代码实现 (根据 num 字段从高到低):
array(12) { [0]=> array(2) { ["name"]=> string(9) "司徒镇" ["num"]=> float(57.6) } [1]=> array(2) { ["name"]=> string(9) "延陵镇" ["num"]=> float(46.9) } [2]=> array(2) { ["name"]=> string(9) "珥陵镇" ["num"]=> float(25.5) } [3]=> array(2) { ["name"]=> string(9) "导墅镇" ["num"]=> float(36.9) } [4]=> array(2) { ["name"]=> string(9) "黄塘镇" ["num"]=> float(64.9) } [5]=> array(2) { ["name"]=> string(9) "吕城镇" ["num"]=> float(38.6) } [6]=> array(2) { ["name"]=> string(9) "陵口镇" ["num"]=> float(25.5) } [7]=> array(2) { ["name"]=> string(9) "访仙镇" ["num"]=> float(32) } [8]=> array(2) { ["name"]=> string(9) "界牌镇" ["num"]=> float(58.5) } [9]=> array(2) { ["name"]=> string(9) "丹北镇" ["num"]=> float(230.3) } [10]=> array(2) { ["name"]=> string(12) "云阳街道" ["num"]=> float(209.7) } [11]=> array(2) { ["name"]=> string(12) "曲阿街道" ["num"]=> float(319.1) } }
代码实现 ($data [‘data’] 上面代码源数据):
//根据字段num对数组$data进行降序排列 $all_num = array_column($data['data'],'num'); array_multisort($all_num,SORT_DESC,$data['data']);
结果:
array(12) { [0]=> array(2) { ["name"]=> string(12) "曲阿街道" ["num"]=> float(319.1) } [1]=> array(2) { ["name"]=> string(9) "丹北镇" ["num"]=> float(230.3) } [2]=> array(2) { ["name"]=> string(12) "云阳街道" ["num"]=> float(209.7) } [3]=> array(2) { ["name"]=> string(9) "黄塘镇" ["num"]=> float(64.9) } [4]=> array(2) { ["name"]=> string(9) "界牌镇" ["num"]=> float(58.5) } [5]=> array(2) { ["name"]=> string(9) "司徒镇" ["num"]=> float(57.6) } [6]=> array(2) { ["name"]=> string(9) "延陵镇" ["num"]=> float(46.9) } [7]=> array(2) { ["name"]=> string(9) "吕城镇" ["num"]=> float(38.6) } [8]=> array(2) { ["name"]=> string(9) "导墅镇" ["num"]=> float(36.9) } [9]=> array(2) { ["name"]=> string(9) "访仙镇" ["num"]=> float(32) } [10]=> array(2) { ["name"]=> string(9) "珥陵镇" ["num"]=> float(25.5) } [11]=> array(2) { ["name"]=> string(9) "陵口镇" ["num"]=> float(25.5) } }