php数组如何按拼音顺序排序
天蓬老师
天蓬老师 2017-04-10 15:41:03
[PHP讨论组]
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),
    );

找到汉字转拼音库

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(5)
黄舟

最近也碰到了要对汉字排序的问题, 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 => '朱文渊'
PHPz
$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()

PHP中文网

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

迷茫

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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