php 數組同時包含中英文,怎麼對數組按首個單詞或者漢字排序
回複內容:
php 數組同時包含中英文,怎麼對數組按首個單詞或者漢字排序
PHP有很多對數組進行排序的函數。
比如最基本的sort和rsort(加r的代表逆序,下同);
自然排序的natsort(自然排序就是對數字按照大小排序,而不是根據ASCII碼排序)以及忽略大小寫natcasesort;
保持鍵-值索引關係的asort和arsort;
依據鍵進行排序的ksort和krsort;
如果你不滿意內建的定序,你還可以自己編寫函數確定定序的usort、uasort和uksort(對應沒有u的上述函數);
還有可以對多個數組排序,並且只保持關聯陣列的鍵-值索引關係的array_multisort。
這麼多排序總有一款適合你。
具體請參閱文檔。
ls排序:1 11 111 112 12 121 122 a aa aaa aab ab aba abb 阿里 百度 中 中國 中國國 中國中 中中 中中國 中中中collator_sort(zh_CN)排序(類似Windows/Linux案頭檔案管理工具裡的預設按名稱上升排列):1 11 12 111 112 121 122 a aa aaa aab ab aba abb 阿里 百度 中 中國 中國國 中國中 中中 中中國 中中中strnatcmp排序:1 11 12 111 112 121 122 a aa aaa aab ab aba abb 中 中中 中中中 中中國 中國 中國中 中國國 百度 阿里strcmp排序:1 11 111 112 12 121 122 a aa aaa aab ab aba abb 中 中中 中中中 中中國 中國 中國中 中國國 百度 阿里
使用strcmp字串比較排序其實就已經能夠滿足你的需求.
strnatcmp自然排序跟strcmp字串比較排序主要區別在於數字,strnatcmp處理後的數字元素是由小到大排序,存在大小關係.
而ICU擴充intl裡的簡體中文排序器collator_sort(zh_CN)排序主要能夠根據漢字的拼音進行排序,比如Ali,Baidu,ZhongGuo.感興趣還可以看下我的這篇文章 PHP利用ICU擴充intl快速實現漢字轉拼音以及按拼音首字母分組排序 ,漢字轉拼音就一個函數的事:
echo transliterator_transliterate('Any-Latin; Latin-ASCII; Upper()', '中華有為');//輸出 ZHONG HUA YOU WEI