The php array contains both Chinese and English, how to sort the array by the first word or Chinese characters
The php array contains both Chinese and English, how to sort the array by the first word or Chinese characters
PHP has many functions for sorting arrays.
For example, the most basic sort
and rsort
(adding r
means reverse order, the same below);
natural sorting natsort
(natural sorting is to sort numbers according to size, not according to ASCII code) and natcasesort
that ignores case;
asort and
arsort that maintain the key-value index relationship;
ksort
and krsort
that sort by key; If you are not satisfied with the built-in sorting rules, you can also You can write your own functions to determine the sorting rules
usort
, uasort
and uksort
(corresponding to the above functions without u
); You can also sort multiple arrays and only maintain the key-value index of the associative array Relational
array_multisort
.
With so many arrangements, there is always one that suits you.
<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>
The main difference between strnatcmp natural sorting and strcmp string comparison sorting is the number. The numerical elements processed by strnatcmp are sorted from small to large, and there is a size relationship.
And The simplified Chinese sorter collator_sort (zh_CN) in the ICU extension intl can sort according to the pinyin of Chinese characters, such as Ali, Baidu, ZhongGuo. If you are interested, you can also read my article PHP uses the ICU extension intl to quickly convert Chinese characters Pinyin and grouping and sorting by the first letter of Pinyin, converting Chinese characters to Pinyin is just a function:
<code>echo transliterator_transliterate('Any-Latin; Latin-ASCII; Upper()', '中华有为'); //输出 ZHONG HUA YOU WEI</code>