php数组如何按拼音顺序排序

php中文网
发布: 2016-06-06 20:33:27
原创
1491人浏览过

<code>php</code><code>$pinyin = array(
        array('name'=>'梁朝伟','age'=>23),
        array('name'=>'andy','age'=>24),
        array('name'=>'黎明','age'=>19),
        array('name'=>'郭富城','age'=>20)
    );


</code>
登录后复制

name字段转为拼音然后按字母排序,如果第一个字母相同比较第二个,希望结果为

<code>php</code><code>$pinyin = array(
        array('name'=>'andy','age'=>24),
        array('name'=>'郭富城','age'=>20)
        array('name'=>'梁朝伟','age'=>23),
        array('name'=>'黎明','age'=>19),
    );
</code>
登录后复制

找到汉字转拼音库

回复内容:

<code>php</code><code>$pinyin = array(
        array('name'=>'梁朝伟','age'=>23),
        array('name'=>'andy','age'=>24),
        array('name'=>'黎明','age'=>19),
        array('name'=>'郭富城','age'=>20)
    );


</code>
登录后复制

name字段转为拼音然后按字母排序,如果第一个字母相同比较第二个,希望结果为

<code>php</code><code>$pinyin = array(
        array('name'=>'andy','age'=>24),
        array('name'=>'郭富城','age'=>20)
        array('name'=>'梁朝伟','age'=>23),
        array('name'=>'黎明','age'=>19),
    );
</code>
登录后复制

找到汉字转拼音库

最近也碰到了要对汉字排序的问题, Collator 效果还不错, 参考 Comparing UTF-8 String

立即学习PHP免费学习笔记(深入)”;

Qwen
Qwen

阿里巴巴推出的一系列AI大语言模型和多模态模型

Qwen 691
查看详情 Qwen
<code>$name = [...];
(new \Collator('zh-CN'))->asort($name);
var_dump( $name );
</code>
登录后复制

实际前后:

<code> 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 => '郎中张钧'
</code>
登录后复制

=>

<code> 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 => '朱文渊'
</code>
登录后复制

<code>$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 汉字转拼音
}
</code>
登录后复制

楼上正解,手册看一下array_multisort()

不懂楼主的做法,汉字排序时本来就是按拼音顺序排的,因为汉字编码表本身就是按照字母顺序来的。echo "梁朝伟" 拼音排序还要用拼音库的都太缺乏基础知识了。

@incNick 其实GBK编码也不是完全按照首字母排序的,你可以去查一查GBK编码表,希望大家不要被误导

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号