数组排序区分大小写


Array sorting case-sensitivity

我只是想知道为什么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'之前。