在php中對數組排序包括一維數組排序與多維陣列排序,下面我來詳細介紹利用php數組排序函數與自定函數來實現資料排序的具體方法。
單數組排序
sort函數升序排序
bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )
| 代碼如下 |
複製代碼 |
$fruits = array("lemon", "orange", "banana", "apple"); sort($fruits); var_dump($fruits); ?> |
-rsort降序排列--
| 代碼如下 |
複製代碼 |
$fruits = array("lemon", "orange", "banana", "apple"); rsort($fruits);var_dump($fruits); ?> |
比如有個多維陣列:
| 代碼如下 |
複製代碼 |
$arr = array( 'd' => array('id' => 5, 'name' => 1, 'age' => 7), 'b' => array('id' => 2,'name' => 3,'age' => 4), 'a' => array('id' => 8,'name' => 10,'age' => 5), 'c' => array('id' => 1,'name' => 2,'age' => 2) ); |
需要對二維數組中的 age 項排序。
需要用到PHP的內建函數 array_multisort(),
array_multisort() 需要一個包含列的數組,因此用以下代碼來取得列,然後排序。
| 代碼如下 |
複製代碼 |
// 取得列的列表 foreach ($data as $key => $row) { $volume[$key] = $row['volume']; $edition[$key] = $row['edition']; } |
// 將資料根據 volume 降序排列,根據 edition 升序排列
// 把 $data 作為最後一個參數,以通用鍵排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
資料集合現在排好序了,結果如下:
volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7
//自訂函數:
| 代碼如下 |
複製代碼 |
function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC) { if(is_array($multi_array)) { foreach ($multi_array as $row_array) { if(is_array($row_array)) { $key_array[] = $row_array[$sort_key]; } else { return false; } } } else { return false; } array_multisort($key_array,$sort,$multi_array); return $multi_array; } |
//處理
| 代碼如下 |
複製代碼 |
print_r(multi_array_sort($arr,'age')); //輸出 Array ( [c] => Array ( [id] => 1 [name] => 2 [age] => 2 ) [b] => Array ( [id] => 2 [name] => 3 [age] => 4 ) [a] => Array ( [id] => 8 [name] => 10 [age] => 5 ) [d] => Array ( [id] => 5 [name] => 1 [age] => 7 ) ) |
實際上真正在排序的時候還有很多方法可以使用,比如php的array數組內建的 arsort(),asort(),ksort(),krsort(),natsort(),natcasesort(),rsort(),usort(),array_multisort() 和 uksort()。
http://www.bkjia.com/PHPjc/445296.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445296.htmlTechArticle在php中對數組排序包括一維數組排序與多維陣列排序,下面我來詳細介紹利用php數組排序函數與自定函數來實現資料排序的具體方法。 單數...