如何使用PHP排序key为字母+数字的数组

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

具体可看: 数组函数

原文地址:https://www.cnblogs.com/ailhc/p/7594585.html