你還在為如何使用PHP排序字母+數字的數組而煩惱嗎?
今天有個小伙伴在群里問:
如何將一個key為字母+數字的數組按升序排序呢?
舉個例子:
$test = [
'n1' => 22423,
'n10' => 22423,
'n2' => 'werwerw',
'n3' => 22423,
'n4' => 22423,
'n5' => 22423,
'n21' => 22423,
'n11' => 22423,
];
希望將它排序成這樣子:
$test = [
'n1' => 22423,
'n2' => 'werwerw',
'n3' => 22423,
'n4' => 22423,
'n5' => 22423,
'n10' => 22423,
'n11' => 22423,
'n21' => 22423,
]
PHP數組函數幫到你
$test = [
'n1' => 22423,
'n10' => 22423,
'n2' => 'werwerw',
'n3' => 22423,
'n4' => 22423,
'n5' => 22423,
'n21' => 22423,
'n11' => 22423,
];
ksort($test, SORT_NATURAL);
var_dump($test);
得到的結果:
array (size=8)
'n1' => int 22423
'n2' => string 'werwerw' (length=7)
'n3' => int 22423
'n4' => int 22423
'n5' => int 22423
'n10' => int 22423
'n11' => int 22423
'n21' => int 22423
那么這個函數的意思是什么呢?
定義和用法
ksort()
函數對關聯數組按照鍵名
進行升序
排序。
語法
ksort(array,sortingtype);
參數 | 描述 |
---|---|
array | 必需。規定要進行排序的數組。 |
sortingtype | 可選。規定如何排列數組的元素/項目。可能的值: 0 = SORT_REGULAR -默認。把每一項按常規順序排列(Standard ASCII,不改變類型)。 1 = SORT_NUMERIC - 把每一項作為數字來處理。 2 = SORT_STRING - 把每一項作為字符串來處理。 3 = SORT_LOCALE_STRING - 把每一項作為字符串來處理,基於當前區域設置(可通過 setlocale() 進行更改)。 4 = SORT_NATURAL - 把每一項作為字符串來處理,使用類似 natsort() 的自然排序。 5 = SORT_FLAG_CASE - 可以結合(按位或)SORT_STRING 或 SORT_NATURAL 對字符串進行排序,不區分大小寫。 |
說明
ksort()
函數按照鍵名
對數組排序,為數組值保留
原來的鍵。
可選的第二個參數包含附加的排序標志。
若成功,則返回 TRUE,否則返回 FALSE。
提示
提示:請使用 krsort()
函數對關聯數組按照鍵名
進行降序
排序。
提示:請使用 asort()
函數對關聯數組按照鍵值
進行升序
排序。
具體可看: 數組函數