php – sort()为日语

如果我将当前的语言环境设置为日文,那么如何使日语字符总是比非日语字符更高的偏好.例如,现在英文字符将始终出现在片假名字符之前.如何扭转这种效应?

对不起,不清楚正如你可以看到here.

最终的结果有Java,NVIDIA和Windowsファイアウォール.
排在日本人头前的前三名.有可能让那些到底吗?

使用 usort()而不是 sort(),以便您可以以自己的方式定义比较标准.

尝试这个简单的方法.我已经尝试了从here的例子,它的作品.

function mccompare($a,$b) {
    $fca = ord(substr($a,1)); $fcb = ord(substr($b,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.

希望对你有帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧