首頁 > 後端開發 > php教程 > php 中英文數組排序

php 中英文數組排序

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-08-04 09:20:30
原創
2615 人瀏覽過

php 陣列同時包含中英文,怎麼對陣列依首個字或漢字排序

回覆內容:

php 陣列同時包含中英文,怎麼對陣列依首個字或漢字排序

PHP有很多對陣列進行排序的函數。

例如最基本的sortrsort(加上r的代表逆序,下同);
自然排序的natsort(自然排序就是對數字按照大小排序,而不是根據ASCII碼排序)以及根據ASCII碼忽略大小寫的natcasesort
保持鍵-值索引關係的asortarsort
依據鍵進行排序的ksort和內置krsort;可以自己寫函數來決定排序規則的
usortuasortuksort(對應沒有u的上述函數);還有可以對多個陣列排序,並且只保持關聯數組的鍵-值索引關係的
array_multisort

這麼多排序總有一款適合你。

具體請參閱文件。

<code><?php
header('Content-Type: text/plain; charset=utf-8');
$arr = explode(' ', '1 11 111 112 12 121 122 a aa aaa aab ab aba abb 阿里 百度 中 中国 中国国 中国中 中中 中中国 中中中');
shuffle($arr); //打乱数组
//collator_sort(collator_create('zh_CN'), $arr);
//usort($arr, function($a, $b) { return strnatcmp($a, $b); });
usort($arr, function($a, $b) { return strcmp($a, $b); });
echo implode(' ',$arr);
exit();
?>
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 中 中中 中中中 中中国 中国 中国中 中国国 百度 阿里</code>
登入後複製

使用strcmp字串比較排序其實就已經能夠滿足你的需求.

strnatcmp自然排序跟strcmp字符串比較排序主要區別在於數字,strnatcmp處理後的數字元素是由小到大排序,存在大小關係.
而ICU擴充intl裡的簡體中文排序器collat​​or_sort(zh_CN)排序主要能夠根據漢字的拼音進行排序,比如Ali,Baidu,ZhongGuo.感興趣還可以看下我的這篇文章PHP利用ICU擴展intl快速實現漢字轉拼音以及按拼音首字母分組排序,漢字轉拼音就一個函數的事:

<code>echo transliterator_transliterate('Any-Latin; Latin-ASCII; Upper()', '中华有为');
//输出 ZHONG HUA YOU WEI</code>
登入後複製
相關標籤:
php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板