[PHP] array_multisort

這是一個陣列排序的函數
之前雖然有用過
但是那時一直沒搞懂
最近剛好又需要使用
這次弄懂了,就寫一下說明

這函數可以用在多個一維陣列排序
也可以用在一個多維陣列排序
我這邊只說明一個多維陣列的排序
當初也是用這功能,只是一直沒搞懂

我就直接拿php官網的範例來用
資料
volume | edition
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7
$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);

排列
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
參數最後的部分是代入此多維陣列
至於前面2個一維陣列是要怎麼用(我就是在這搞不清楚)
原來是當成排列的依據
因為原陣列是多維陣列
所以將原陣列要排序的部分先簡化成一維陣列
再將一維陣列當參數代入來排序
而這範例是簡化2個一維陣列作排序
就是先依照第一個一維陣列排序,再照第二個一維陣列排序
所以當然也可以只照一個或多個一維陣列來排序
就像SQL的order by一樣,可以有多個
只是要先將排序的某一部分輸出成一維陣列出來

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

引用通告地址: http://www.fase.idv.tw/blog/trackback.php?tbID=58&extra=6b7f03
標籤: PHP
評論: 0 | 引用: 0 | 閱讀: 3586
發表評論
暱 稱(*): 密 碼:
網 址: E - mail:
驗證碼(*): 驗證碼圖片
請用滑鼠點選輸入
選 項:
頭 像:
內 容(*):