PHP 5.4引入了有用的SORT_FLAG_CASE,使其他任何搜索大小写都不敏感。不幸的是,这在PHP 5.3或更低版本中不可用,因此我想知道以下数组:
array('a'=>2,'b'=>4,'A'=>1,'B'=>3);
可以分类为:
array('A'=>1,'a'=>2,'B'=>3,'b'=>4);
通常的ksort()
函数将其排序为:
array('A'=>1,'B'=>3,'a'=>2,'b'=>4);
答案 0 :(得分:27)
对其中一个PHP函数引用页面的注释向我指出了uksort()
函数;这个(和uasort()
函数按值而不是键排序)允许比较算法转换快速排序由用户编写。
将此与非常简单的strcasecmp()
函数(比较两个字符串并返回< 0表示> b和> 0表示> b)结合使用:
uksort($array, 'strcasecmp');
轻松达到以下效果:
ksort($array,SORT_STRING | SORT_FLAG_CASE);
在PHP 5.3或更低版本中。
答案 1 :(得分:1)
这就是我在PHP 7中对utf8字符串排序(不区分大小写)的数组:
uksort($myarray, function ($a, $b) {
$a = mb_strtolower($a);
$b = mb_strtolower($b);
return strcmp($a, $b);
});
对于PHP 5.3,您需要创建自己的排序功能:
function mySort1($a, $b) {
$a = mb_strtolower($a);
$b = mb_strtolower($b);
return strcmp($a, $b);
}
uksort($result['rows'], 'mySort1');