gpt4 book ai didi

php - 日语的 sort()

转载 作者:可可西里 更新时间:2023-10-31 22:48:31 32 4
gpt4 key购买 nike

如果我将我当前的语言环境设置为日语,我怎样才能使日语字符总是比非日语字符具有更高的优先级。例如,现在英文字符总是出现在片假名字符之前。我怎样才能扭转这种影响?

抱歉,不是很清楚。如你所见here .

最后的成绩有Java、NVIDIA和Windows的ファイアウォール。排在日本文字前三位。可以把那些放在最后吗?

最佳答案

使用usort()而不是 sort()因此您可以按照自己的方式定义比较标准。

试试这个简单的方法。我已经用 here 的例子试过了, 并且有效。

  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");

所以对于这个例子

  setlocale(LC_COLLATE, "jpn");

$your_array = array ("システム", "画面", "Windows ファイウォール",
"インターネット オプション", "キーボード", "メール", "音声認識", "管理ツール",
"自動更新", "日付と時刻", "タスク", "プログラムの追加と削除", "フォント",
"電源オプション", "マウス", "地域と言語オプション", "電話とモデムのオプション",
"Java", "NVIDIA");

usort ($your_array, "mccompare");
print_r($your_array);

它返回类似的数组

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 还是 $a>$b.

希望对你有用!

关于php - 日语的 sort(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5698226/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com