AI智能
改变未来

php 数组排序方法-根据指定的键对多维数组进行排序

根据指定的键对多维数组排序,可以按照多个键排序

我们通常有一些多维数组需要排序:

$guys = array(array(\'name\' => \'jake\',\'score\' => 80,\'grade\' => \'A\'),array(\'name\' => \'jin\',\'score\' => 70,\'grade\' => \'A\'),array(\'name\' => \'john\',\'score\' => 80,\'grade\' => \'A\'),array(\'name\' => \'ben\',\'score\' => 20,\'grade\' => \'B\'));

例如我们想按成绩倒序排列,如果成绩相同就按名字的升序排列。

我们就可以用下面这个函数进行排序:

如果仅按照score排序:

$rows = list_orderByMultiCols($rows, array(\'score\' => \'SORT_DESC\'));

如果仅按照score,name排序:

$rows = list_orderByMultiCols($rows, array(\'score\' => \'SORT_DESC\', \'name\' => \'SORT_ASC\'));

其中用到了array_multisort函数:

他的排序方式有:SORT_ASC 升序,SORT_DESC 倒序
具体函数代码如下:

/** @param array $rowset 要排序的数组/行集* @param array $args 排序的键** @return array 排序后的数组*/function list_orderByMultiCols($rowset, $args){$orderArray = array();$orderRule = \'\';foreach ($args as $orderField => $orderDir){foreach ($rowset as $offset => $row){$orderArray[$orderField][$offset] = $row[$orderField];}$orderRule .= \'$orderArray[\\\'\' . $orderField . \'\\\'], \' . $orderDir . \', \';}if (empty($orderArray) || empty($orderRule)){return $rowset;}eval(\'array_multisort(\' . $orderRule . \'$rowset);\');return $rowset;}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » php 数组排序方法-根据指定的键对多维数组进行排序