Q
排序()日本
10
A
回答
6
使用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。
希望它適合你!
2
最終,PHP的sort()
離開到底層的libc實現排序。如文章和我的評論所示,並非所有的libcs都以相同的方式排序。如果您需要提供一致的排序規則,那麼您需要使用諸如Collator
之類的內容,而不是使用第三方庫。
相關問題
- 1. 排序日語
- 2. 日期排序
- 3. 排序日期
- 4. 排序日期
- 5. 排序日期
- 6. 排序日期
- 7. 版本json按日期排序? - Dropbox Api
- 8. jQuery Datatable按文本日期排序
- 9. Django按日期排序(日)
- 10. 按日期排序和按天排序
- 11. CouchDB視圖排序按日期排序
- 12. 日期排序ArrayList
- 13. 按日期排序
- 14. javascript日期排序
- 15. 按日期排序
- 16. 按日期排序?
- 17. Log4j排序日誌
- 18. NSArray日期排序
- 19. 按日期排序
- 20. 排序JSON日期
- 21. 排序日期ArrayList
- 22. ObjectListView日期排序
- 23. 按日期排序
- 24. 排序日期fetchrequest
- 25. datatables排序日期
- 26. sqlite日期排序
- 27. 升序排序日期
- 28. 排序日期降序
- 29. 排序日期沒有返回排序日期
- 30. 排序數據從本月21日到下個月20日 - Java
沒有看到。你確定安裝了正確的語言環境嗎? '$ LC_COLLATE = ja_JP sort <<<''kawa \ nかわ\ nカワ\ n川'' 'かわ' 'カワ' 'kawa' '川' – 2011-04-18 03:33:01