PHP含特殊字符的数组按键排序方案求助
对带斯洛文尼亚语特殊字符的PHP关联数组按键排序
嘿,我懂你找靠谱解决方案的心情——带č、š这类特殊字符的本地化排序确实容易掉坑!你已经正确设置了斯洛文尼亚语的区域,接下来只需要用适配本地化规则的排序方法就行:
普通的ksort()函数默认按ASCII值排序,没法识别斯洛文尼亚语的字母顺序,所以咱们得用uksort()配合strcoll()函数来实现自定义的本地化按键排序,具体代码如下:
setlocale(LC_ALL, 'sl_SI.utf8'); $a = [ 'č' => [...], 'a' => [...], 'š' => [...], 'u' => [...] ]; // 基于当前区域规则对数组按键排序 uksort($a, function($key1, $key2) { return strcoll($key1, $key2); });
关键说明:
strcoll()函数会严格遵循你之前设置的sl_SI.utf8区域规则来比较字符串,所以č、š这些字符会按照斯洛文尼亚语的自然字母顺序排列(比如最终顺序会是a→č→š→u)。- 如果你的
setlocale()调用返回false,说明服务器上没安装斯洛文尼亚语的区域包,需要先安装:- Debian/Ubuntu系统:运行
sudo locale-gen sl_SI.utf8 - CentOS/RHEL系统:运行
sudo localedef -i sl_SI -f UTF-8 sl_SI.utf8
- Debian/Ubuntu系统:运行
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

