【PHP篇】数组排序函数array

    技术2022-08-01  67

    排序顺序标志:

    ■ SORT_ASC - 按照上升顺序排序 ■ SORT_DESC - 按照下降顺序排序

    排序类型标志

    ■ SORT_REGULAR -将项目按照通常方法比较 ■ SORT_NUMERIC - 将项目按照数值比较 ■ SORT_STRING - 将项目按照字符串比较 更多参数可参考php文档

    二维数组排序

    $array = array( array('id'=>'1','total' => '12','finish' => '12', 'ranking' => '1'), array('id'=>'2','total' => '12','finish' => '8', 'ranking' => '0.67'), array('id'=>'3','total' => '11','finish' => '7', 'ranking' => '0.64'), array('id'=>'4','total' => '11','finish' => '7', 'ranking' => '0.64'), array('id'=>'5','total' => '10','finish' => '10', 'ranking' => '1'), );
    tota代表总量 finish代表完成量 ranking代表完成百分比
    $keyRank = array_column($array, 'ranking'); $keyTotal = array_column($array, 'total_amount'); array_multisort($keyRank, SORT_DESC, $keyTotal, SORT_DESC, $array); echo '<pre>'; print_r($array);

    结果顺序为:(1,5,2,3,4)

    以上例子中 首先对百分比(ranking)进行倒序排序,当百分比的值相同时。对总量(total)进行倒序排序

    一维数组

    $array1 = array('id'=>'1','total' => '12','finish' => '12', 'ranking' => '1'); $array2 = array('id'=>'2','total' => '11','finish' => '7', 'ranking' => '0.64'); $array3 = array('id'=>'3','total' => '10','finish' => '10', 'ranking' => '1'); array_multisort($array1, $array2, $array3); print_r($array1);//Array ( [ranking] => 1 [id] => 1 [finish] => 12 [total] => 12 ) print_r($array2);//Array ( [ranking] => 0.64 [id] => 2 [finish] => 7 [total] => 11 ) print_r($array3);//Array ( [ranking] => 1 [id] => 3 [finish] => 10 [total] => 10 )

    默认所有数组升序排序 以上例子中 ,首先对$array1进行排序,可以看到(键名‘id’和‘ranking’的键值相同,键名‘total’和‘finish’的键值相同),所以在排序$array1的相同值时 按照$array2相应值的大小来排序($array2 ‘ranking’的值小于‘id’的值,因此ranking的值排在id的前面),依此类推。

    Processed: 0.014, SQL: 10