對陣列進行排序
PHP 有一些用來排序陣列的函式, 這個文件會把它們列出來。
主要區別有:
-
有些函式基於 array 的鍵來排序,
而其他的基於值來排序的:
$array['key'] = 'value';
。 - 排序之後鍵和值之間的關聯關係是否能夠保持, 是指排序之後陣列的鍵可能 會被重置為數字型的(0,1,2 ...)。
- 排序的順序有:字母表順序, 升序(由低到高), 降序(由高到低),數字排序,自然排序,隨機順序或者使用者自定義排序。
- 注意:下列的所有排序函式都是直接作用於陣列本身, 而不是返回一個新的有序的陣列。
- 以下函式對於陣列中相等的元素,會保留原有的排序。 在 PHP 8.0.0 之前,它們排序后的順序是未定義的(也即相等元素之間的順序是不穩定的)。
函式名稱 | 排序依據 | 陣列索引鍵保持 | 排序的順序 | 相關函式 |
---|---|---|---|---|
array_multisort() | 值 | string 鍵保持不變,int 鍵重新索引 | 第一個陣列或者由選項指定 | array_walk() |
asort() | 值 | 是 | 升序 | arsort() |
arsort() | 值 | 是 | 降序 | asort() |
krsort() | 鍵 | 是 | 降序 | ksort() |
ksort() | 鍵 | 是 | 升序 | krsort() |
natcasesort() | 值 | 是 | 自然排序,大小寫不敏感 | natsort() |
natsort() | 值 | 是 | 自然排序 | natcasesort() |
rsort() | 值 | 否 | 降序 | sort() |
shuffle() | 值 | 否 | 隨機 | array_rand() |
sort() | 值 | 否 | 升序 | rsort() |
uasort() | 值 | 是 | 由使用者定義 | uksort() |
uksort() | 鍵 | 是 | 由使用者定義 | uasort() |
usort() | 值 | 否 | 由使用者定義 | uasort() |