在php中對數組排序包括一維數組排序與多維數組排序,下面我來詳細介紹利用php數組排序函數與自定函數來實現數據排序的具體方法.
單數組排序,sort函數升序排序:
bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )
PHP實例代碼如下:
- <?php
- $fruits = array("lemon", "orange", "banana", "apple");
- sort($fruits);
- var_dump($fruits);
- ?>
-rsort降序排列--,代碼如下:
- <?php
- $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;
- }//開源軟件:Vevb.com
- //處理
- 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().
新聞熱點
疑難解答