我只是想知道为什么ksort()函数在默认情况下先排序大写键,然后小写键?
这背后的逻辑是什么?
您似乎熟悉ksort()
区分大小写的事实。
我不清楚原因,但有一个简单的解决办法。
uksort()
允许您使用用户定义的函数对数组进行排序,然而,尽管我们很懒,但我们不想定义自己的函数并使用本地函数。函数strcasecmp()
允许我们以不区分大小写的方式比较字符串,当我们定义自己的函数时,它的工作方式与此完全相同。当字符串的值很大时,返回一个大于0的值。如果值较小,则返回较小的值,如果相等,则返回0。因此,这是我们uksort()
函数的完美候选。
$sorted = uksort($array, 'strcasecmp');
大写值小于小写值
eg:- in ascii。A - 65, A - 97
因为在排序字母时大写字母比小写字母"高",所以标点符号也更高。是A-Za-z
对于不区分大小写的自然排序使用natcasesort($array);
。
发现这个问题搜索解决我的问题的'错误'排序完成ksort。我对自己说:"好吧,这就是我想要的样子。"我的解决方案是:
ksort($array, SORT_NATURAL | SORT_FLAG_CASE)
使用这些标志,它将把'Payment'放在'password'之后,而不是在'password'之前。