首頁  >  文章  >  後端開發  >  如何利用php array_multisort函數 對資料庫結果進行複雜排序

如何利用php array_multisort函數 對資料庫結果進行複雜排序

高洛峰
高洛峰原創
2017-01-06 16:51:461226瀏覽

先來講一下需求:資料庫中有4個欄位分別是id,volume,edition,name. 要求對查詢結果依照volume+edition從大到小排序。
下面將一下array_multisort函數
array_multisort() 可以用來一次對多個數組進行排序,或者根據某一維或多維對多維數組進行排序。

關聯(string)鍵名保持不變,但數字鍵名會被重新索引。

排序順序標誌:
SORT_ASC – 依照上升順序排序
SORT_DESC – 依照下降順序排序

排序類型標誌:
SORT_REGULAR – 將項目依照通常方法比較
SORT_NUMERIC – 將項目依照數字比較
串比較

每個數組之後不能指定兩個同類的排序標誌。每個數組後指定的排序標誌僅對該數組有效 – 在此之前為預設值 SORT_ASC 和 SORT_REGULAR。

輸入陣列被當作一個表格的欄位並且以行來排序-這類似於 SQL 的 ORDER BY 子句的功能。第一個陣列是要排序的主要陣列。數組中的行(值)比較為相同的話就按照下一個輸入數組中對應值的大小來排序,依此類推。

本函數的參數結構有些不同尋常,但是非常靈活。第一個參數必須是一個陣列。接下來的每個參數可以是陣列或是下面列出的排序標誌。

這樣我們現在有這樣一組資料

// 这是一组从数据库查询出来的结果
$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);
//我们需要先做出一个volume+edition的数组来
foreach($data as $val){
     $arr[] = $val['volume'] + $val['edition']; 
}
// 将$arr根据降序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($arr, SORT_DESC, $data);

這樣就實現了我們需要的功能

更多如何利用php array_multisort函數 對資料庫結果進行複雜排序相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn