數(shù)組多字段排序

data 數(shù)組中的每個單元表示一個表中的一行。這是典型的數(shù)據(jù)庫記錄的數(shù)據(jù)集合

volume | edition
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

數(shù)據(jù)全都存放在名為 data 的數(shù)組中。這通常是通過循環(huán)從數(shù)據(jù)庫取得的結(jié)果.

$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);

現(xiàn)在要把 volume 降序排列,把 edition 升序排列,達(dá)到mysql多字段排序的效果.
現(xiàn)在有了包含有行的數(shù)組,但是 array_multisort() 需要一個包含列的數(shù)組,因此用以下代碼來取得列,然后排序。

// 取得列的列表
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

// 將數(shù)據(jù)根據(jù) volume 降序排列,根據(jù) edition 升序排列
// 把 $data 作為最后一個參數(shù),以通用鍵排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

數(shù)據(jù)集合現(xiàn)在排好序了,結(jié)果如下:

volume | edition
-------+--------
    98 |       2
    86 |       1
    86 |       6
    85 |       6
    67 |       2
    67 |       7

我們看到數(shù)據(jù)先按volume降序排序,然后再按edition升序排序.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 閘坡情懷 這篇,我要說說我們的畢業(yè)游,閘坡的故事。 學(xué)期一開始,兩個班的班長就聊過關(guān)于畢業(yè)游的事情,本來都想著分班...
    阿缽閱讀 1,039評論 0 3
  • 喜歡,倚在夜晚的門廊,聽潮濕的風(fēng)聲,看清涼如水的月牙與班班點點的星光相互依偎。 喜歡,站在夕陽的海岸,聞咸咸的海,...
    一劍如故閱讀 331評論 0 0
  • 作者/無憂先生 "親愛的爸爸媽媽,你們好嗎?現(xiàn)在工作很忙吧?身體好吧?”聽著這熟悉的旋律,以往的事情像幻燈片圖片一...
    無憂先生閱讀 422評論 0 1

友情鏈接更多精彩內(nèi)容