程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP多維數組排序實現程序代碼

PHP多維數組排序實現程序代碼

編輯:關於PHP編程

在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()。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved