php数组如何按拼音顺序排序
程序员文章站
2024-04-02 19:40:28
...
php
$pinyin = array( array('name'=>'梁朝伟','age'=>23), array('name'=>'andy','age'=>24), array('name'=>'黎明','age'=>19), array('name'=>'郭富城','age'=>20) );
name字段转为拼音然后按字母排序,如果第一个字母相同比较第二个,希望结果为
php
$pinyin = array( array('name'=>'andy','age'=>24), array('name'=>'郭富城','age'=>20) array('name'=>'梁朝伟','age'=>23), array('name'=>'黎明','age'=>19), );
找到汉字转拼音库
回复内容:
php
$pinyin = array( array('name'=>'梁朝伟','age'=>23), array('name'=>'andy','age'=>24), array('name'=>'黎明','age'=>19), array('name'=>'郭富城','age'=>20) );
name字段转为拼音然后按字母排序,如果第一个字母相同比较第二个,希望结果为
php
$pinyin = array( array('name'=>'andy','age'=>24), array('name'=>'郭富城','age'=>20) array('name'=>'梁朝伟','age'=>23), array('name'=>'黎明','age'=>19), );
找到汉字转拼音库
最近也碰到了要对汉字排序的问题, Collator 效果还不错, 参考 Comparing UTF-8 String
$name = [...];
(new \Collator('zh-CN'))->asort($name);
var_dump( $name );
实际前后:
0 => '袁次阳'
1 => '段纪明'
2 => '朱公伟'
3 => '朱文渊'
4 => '朱符'
5 => '卢子干'
6 => '皇甫义真'
7 => '阎忠'
8 => '王子师'
9 => '士孙君荣'
10 => '荀慈明'
11 => '黄世英孙'
12 => '赵子柔'
13 => '蔡伯喈'
14 => '蔡文姬'
15 => '杨文先'
16 => '杨德祖'
17 => '吴匡'
18 => '马翁叔'
19 => '郑公业'
20 => '丁建阳'
21 => '尉韩暹'
22 => '胡才'
23 => '李乐'
24 => '杨奉'
25 => '张雅叔'
26 => '杨丑'
27 => '眭白兔'
28 => '蒋石'
29 => '吉本'
30 => '吉文然'
31 => '吉思然'
32 => '耿季行'
33 => '司直韦晃'
34 => '郎中张钧'
=>
13 => '蔡伯喈'
14 => '蔡文姬'
20 => '丁建阳'
1 => '段纪明'
32 => '耿季行'
22 => '胡才'
6 => '皇甫义真'
11 => '黄世英孙'
29 => '吉本'
31 => '吉思然'
30 => '吉文然'
28 => '蒋石'
34 => '郎中张钧'
23 => '李乐'
5 => '卢子干'
18 => '马翁叔'
9 => '士孙君荣'
33 => '司直韦晃'
27 => '眭白兔'
8 => '王子师'
21 => '尉韩暹'
17 => '吴匡'
10 => '荀慈明'
7 => '阎忠'
26 => '杨丑'
16 => '杨德祖'
24 => '杨奉'
15 => '杨文先'
0 => '袁次阳'
25 => '张雅叔'
12 => '赵子柔'
19 => '郑公业'
4 => '朱符'
2 => '朱公伟'
3 => '朱文渊'
$sort = array();
foreach($pinyin as $key => $item) {
$py = zhcnToPinyin($item['name']);
$pinyin[$key]['pinyin'] = $py;
$sort[] = $py;
}
array_multisort($sort, SORT_ASC, $pinyin);
function zhcnToPinyin() {
//TODO 汉字转拼音
}
楼上正解,手册看一下array_multisort()
不懂楼主的做法,汉字排序时本来就是按拼音顺序排的,因为汉字编码表本身就是按照字母顺序来的。echo "梁朝伟" 拼音排序还要用拼音库的都太缺乏基础知识了。
@incNick 其实GBK编码也不是完全按照首字母排序的,你可以去查一查GBK编码表,希望大家不要被误导
上一篇: C++中内存泄漏的检测
下一篇: php面试题(高级部分)
推荐阅读
-
php数组如何按拼音顺序排序
-
php自定义函数实现二维数组按指定key排序的方法
-
PHP实现二维数组按某列进行排序的方法
-
php如何实现统计一个数字在排序数组中出现的次数(代码)
-
数据结构二分法-给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。
-
php实现数组按拼音顺序排序的方法 原创
-
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
-
php实现数组按拼音顺序排序的方法 原创
-
PHP实现二维数组按某列进行排序的方法
-
php自定义函数实现二维数组按指定key排序的方法