在php中數(shù)組排序有很多函數(shù)可以實現(xiàn)的,如果是簡單的一維數(shù)組排序我們可以使用php 自帶的排序函數(shù)了,但多維數(shù)組時我們需要自己寫了。
回來后一直在揪心啊,于是翻了一下書本查閱,給我知道了答案,為了記住它們,我決定來一個數(shù)組排序函數(shù)大總結。
首先接觸的就是PHP數(shù)組排序、降序的排序問題。
sort:本函數(shù)為 array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序。
rsort:本函數(shù)對數(shù)組進行逆向排序(最高到最低)。 刪除原有的鍵名而不僅是重新排序。
asort:對數(shù)組進行排序并保持索引關系
arsort:對數(shù)組進行逆向排序并保持索引關系
ksort:對數(shù)組按照鍵名排序,保留鍵名到數(shù)據(jù)的關聯(lián)
krsort:對數(shù)組按照鍵名逆向排序,保留鍵名到數(shù)據(jù)的關聯(lián)
natsort:對字母數(shù)字字符串進行排序并保持原有鍵/值的關聯(lián)
natcasesort:同natsort排序算法,但不區(qū)分大小寫字母排序
PHP 數(shù)組排序(sort)
數(shù)字索引數(shù)組排序:
函數(shù):sort(array, [sort type])
說明:sort()函數(shù)按升序對指定數(shù)組(第一個參數(shù))進行排序。
sort函數(shù)第二參數(shù)作用為指定排序類型,是可選參數(shù).
SORT_REGULAR: 默認值,不改變類型進行排序;
SORT_NUMERIC: 把值作為數(shù)字進行排序;
SORT_STRING: 把值作為字符串進行排序;
一、一維數(shù)組
假設有一個一維數(shù)組,如下:
$sortArr = array("name"=>"hiro", "age"=>"23", "city"=>"Shanghai", "code"=>"200051");
print_r()輸出的原始數(shù)組結果為:
Array ( [name] => hiro [age] => 23 [city] => Shanghai [code] => 200051 )
1.sort()函數(shù):根據(jù)數(shù)組下標進行升序排列;
print_r()輸出的數(shù)組結果為(輸出時只有數(shù)組下標,而不是鍵名):
Array ( [0] => 23 [1] => 200051 [2] => Shanghai [3] => hiro )
2.rsort()函數(shù):與sort()函數(shù)相反,根據(jù)數(shù)組下標進行降序排列;
print_r()輸出的數(shù)組結果為(輸出時只有數(shù)組下標,而不是鍵名):
Array ( [0] => hiro [1] => Shanghai [2] => 200051 [3] => 23 )
3.asort()函數(shù):根據(jù)數(shù)組的鍵名進行升序排列;
print_r()輸出的數(shù)組結果為:
Array ( [age] => 23 [code] => 200051 [city] => Shanghai [name] => hiro )
4.arsort()函數(shù):與asort()函數(shù)相反,根據(jù)數(shù)組的鍵名進行降序排列;
print_r()輸出的數(shù)組結果為:
Array ( [name] => hiro [city] => Shanghai [code] => 200051 [age] => 23 )
5.ksort()函數(shù):根據(jù)數(shù)組的鍵值進行升序排列;
print_r()輸出的數(shù)組結果為:
Array ( [age] => 23 [city] => Shanghai [code] => 200051 [name] => hiro )
6.krsort()函數(shù):與ksort()函數(shù)相反,根據(jù)數(shù)組的鍵值進行降序排列;
print_r()輸出的數(shù)組結果為:
Array ( [name] => hiro [city] => Shanghai [code] => 200051 [age] => 23 )
7.reverse_array()函數(shù):反向當前的數(shù)組排列順序;
print_r()輸出的數(shù)組結果為:
Array ( [name] => hiro [age] => 23 [city] => Shanghai [code] => 200051 )
8.shuffle()函數(shù):隨機地排列數(shù)組順序(每次刷新后排列的順序都不相同);
print_r()輸出的數(shù)組結果為(只是其中一種隨機排列):
Array ( [0] => 23 [1] => 200051 [2] => Shanghai [3] => hiro )
二、二維數(shù)組
假設有一個二維數(shù)組,代碼如下:
二維數(shù)組的排序是根據(jù)每維的鍵名排序的,所以需要額外地編寫比較函數(shù)。先舉三個例子:
1.按每維的第一個元素升序排列,代碼如下:
2.按每維的第三個元素升序排列,代碼如下:
3.按每維的第三個元素升序排列,代碼如下:
呵呵,是不是代碼多了點,記下了以后方便查閱啊!
例代碼如下: