[PHP] array_multisort
作者: fase 日期: 2009-12-24 17:07
這是一個陣列排序的函數
之前雖然有用過
但是那時一直沒搞懂
最近剛好又需要使用
這次弄懂了,就寫一下說明
這函數可以用在多個一維陣列排序
也可以用在一個多維陣列排序
我這邊只說明一個多維陣列的排序
當初也是用這功能,只是一直沒搞懂
我就直接拿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
[PHP] 貼文到user的facebook塗鴨牆(feed/wall) (2012-12-26 17:23)
[PHP]讀取文字檔,中文亂碼的問題 (2012-10-29 17:37)
空房查詢顯示系統-給旅館民宿業者用 (2012-07-12 10:07)
[PHP]將資料轉成Word(PHPWord) (2011-10-12 15:42)
分享Zen Cart 1.3.9h繁體中文版 (2011-04-22 17:27)
[PHP] readfile (2010-11-03 17:46)
[PHP] uploadprogress的使用 (2010-07-01 11:42)
[phpBB3] 網站登入整合 (2010-03-11 14:09)
[PHP] uploadprogress功能在Windows下安裝 (2010-01-20 11:13)