PHP版本5.3或更低版本中的数组不区分大小写的键排序

M1k*_*1ke 14 php arrays sorting

PHP 5.4引入了有用的SORT_FLAG_CASE,使任何其他搜索大小写不敏感.不幸的是,这在PHP 5.3或更低版本中不可用,所以我想知道以下数组如何:

array('a'=>2,'b'=>4,'A'=>1,'B'=>3);
Run Code Online (Sandbox Code Playgroud)

可以分为:

array('A'=>1,'a'=>2,'B'=>3,'b'=>4);
Run Code Online (Sandbox Code Playgroud)

通常的ksort()功能将其分类为:

array('A'=>1,'B'=>3,'a'=>2,'b'=>4);
Run Code Online (Sandbox Code Playgroud)

M1k*_*1ke 28

对其中一个PHP函数引用页面的注释向我指出了该uksort()函数; 这个(以及uasort()按值而不是按键排序的功能)允许比较算法用于快速排序以便由用户写入.

将它与非常简单的strcasecmp()函数(比较两个字符串并返回<0表示> b,> 0表示> b)给出:

uksort($array, 'strcasecmp');
Run Code Online (Sandbox Code Playgroud)

要轻松达到以下效果:

ksort($array,SORT_STRING | SORT_FLAG_CASE);
Run Code Online (Sandbox Code Playgroud)

在PHP 5.3或更低版本.

  • php怎么会有这样一个搞砸的分拣系统?并根据文档:sort($ words,SORT_STRING | SORT_FLAG_CASE); 应该做一个不区分大小写的值,但它不起作用: (4认同)