【PHP篇】array_multisot

83 阅读1分钟
排序顺序标志:

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相应值的大小来排序($array2ranking’的值小于‘id’的值,因此ranking的值排在id的前面),依此类推。