Php 日语的sort()
如果我已将当前语言环境设置为日语,如何使日语字符始终比非日语字符具有更高的优先级。例如,现在英文字符总是出现在片假名字符之前。我怎样才能扭转这种影响 对不起,我不太清楚。如你所见 最终的结果是Java、NVIDIA和Windowsファイアウォール.Php 日语的sort(),php,unicode,localization,collation,cjk,Php,Unicode,Localization,Collation,Cjk,如果我已将当前语言环境设置为日语,如何使日语字符始终比非日语字符具有更高的优先级。例如,现在英文字符总是出现在片假名字符之前。我怎样才能扭转这种影响 对不起,我不太清楚。如你所见 最终的结果是Java、NVIDIA和Windowsファイアウォール. 排在前三位的是日本汉字。是否有可能将它们放在最后?最终,PHP的sort()将其留给底层libc来实现排序。正如文章和我的评论所示,并不是所有的libc都以相同的方式排序。如果需要提供一致的排序规则,则需要使用诸如使用第三方库之类的工具。使用而不是,
排在前三位的是日本汉字。是否有可能将它们放在最后?最终,PHP的
sort()
将其留给底层libc来实现排序。正如文章和我的评论所示,并不是所有的libc都以相同的方式排序。如果需要提供一致的排序规则,则需要使用诸如使用第三方库之类的工具。使用而不是,以便您可以以自己的方式定义比较标准
试试这个简单的方法。我已经尝试了它的例子,从,它的工作
function mccompare($a, $b) {
$fca = ord(substr($a, 0, 1)); $fcb = ord(substr($b, 0, 1));
if (($fca >= 127 && $fcb >= 127) || ($fca < 127 && $fcb < 127))
$res = $a > $b ? 1 : -1;
else
$res = $a > $b ? -1 : 1;
return $res;
}
usort ($your_array, "mccompare");
它像数组一样返回
Array
(
[0] => インターネット オプション
[1] => キーボード
[2] => システム
[3] => タスク
[4] => フォント
[5] => プログラムの追加と削除
[6] => マウス
[7] => メール
[8] => 地域と言語オプション
[9] => 日付と時刻
[10] => 画面
[11] => 管理ツール
[12] => 自動更新
[13] => 電源オプション
[14] => 電話とモデムのオプション
[15] => 音声認識
[16] => Java
[17] => NVIDIA
[18] => Windows ファイウォール
)
注意:这只是我对这个问题的快速解决方案,并不是一个完美的解决方案。它基于在比较字符串时检查第一个字节,但您始终可以在这方面做一些努力,并改进此函数,以根据Unicode检查所有多字节字符,然后确定$a$b是否正确
希望它对你有用 没有看到。您确定安装了正确的区域设置吗<代码>$LC\u COLLATE=ja\u JP排序
Array
(
[0] => インターネット オプション
[1] => キーボード
[2] => システム
[3] => タスク
[4] => フォント
[5] => プログラムの追加と削除
[6] => マウス
[7] => メール
[8] => 地域と言語オプション
[9] => 日付と時刻
[10] => 画面
[11] => 管理ツール
[12] => 自動更新
[13] => 電源オプション
[14] => 電話とモデムのオプション
[15] => 音声認識
[16] => Java
[17] => NVIDIA
[18] => Windows ファイウォール
)