你还在为如何使用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()
函数对关联数组按照键值
进行升序
排序。
具体可看: 数组函数