美文网首页PHP
PHP实现中文自定义排序,形如:一二三四排序

PHP实现中文自定义排序,形如:一二三四排序

作者: 蓝色_风信子 | 来源:发表于2020-03-21 11:06 被阅读0次

问题:现在有一需求:现有一系列的值,配置三、配置一二、配置二、......,要按照中文的一二三四这种顺序排列

根源:排序函数只会根据汉字的拼音、笔画等排序,不支持自定义顺序(目前尚未找到资料)

解决方式:自写自定义排序函数

参考思路:

1、替换数组值:将数组相关值替换为可以明显排序的字符并记录,如:二替换为2},三替换为3}

2、正常排序:使用数组函数正常排序

3、还原数组值:将替换后的数组值,还原为原值

实现代码:

    // 按自定义顺序排序方法(针对二维数组的prop_value字段)
    function diy_array_asort(&$array) {
        if (!isset($array) || !is_array($array)) {
            return false;
        }

        // 原字符
        $zh_arr = array("一","二","三","四","五","六","七","八","九","十");
        // 对应替换后参与排序的字符(注意加特殊符号,防止后面将正常的值替换了)
        $num_arr = array("1}","2}","3}","4}","5}","6}","7}","8}","9}","10}");
        // 替换前后的匹配数组
        $match_arr = array();

        // 替换相关值
        foreach ($array as $k => &$v) {
            $replace_str = str_replace($zh_arr, $num_arr, $v['prop_value'], $replace_num);
            if($replace_num!=0){
                $match_arr[$v['prop_value']] = $replace_str;
                $v['prop_value'] = $replace_str;
            }
        }

        // 替换后的数组进行排序
        // 二维数组根据字段prop_value对数组进行升序排列
        $prop_values = array_column($array,'prop_value');
        array_multisort($prop_values,SORT_ASC,$array);

        // 排好序后,再匹配回来
        foreach ($array as $k => &$v) {
            if (in_array($v['prop_value'], array_values($match_arr))) {
                $newArr = array_flip($match_arr); // 数组键值翻转
                $v['prop_value'] = $newArr[$v['prop_value']];
            }
        }
        return true;
    }

这里实现的是二维数组的排序,一维数组就更简单了,自行改造去~

相关文章

  • PHP实现中文自定义排序,形如:一二三四排序

    问题:现在有一需求:现有一系列的值,配置三、配置一二、配置二、......,要按照中文的一二三四这种顺序排列 根源...

  • 通过原型链实现数组内置方法[JavaScript_013]

    push()实现 unshift()实现 reverse()实现 sort()自定义排序方法 规则:自定义的排序方...

  • 2021-08-05

    1、排序1.1 排序可以嵌套,开始栏中选排序,选自定义排序,选择主要排序和次要排序,实现排序的嵌套1.2 排序中可...

  • 各种排序算法实现

    C++实现各种排序算法。上张图。 自定义的swap函数。 冒泡排序 插入排序 希尔排序 选择排序 快速排序 归并排...

  • js排序总结

    用sort()方法实现数字英文排序,用localeCompare()方法实现中文排序。 一、定义 sort():用...

  • php获取中文字符拼音首字母

    有时候,需要根据中文排序,例如可以用于php处理联系人顺序的电话本,城市排序,品牌排序等

  • 常用的排序算法

    常用的排序算法(PHP实现)_慕课手记

  • 13、排序和筛选

    1、排序和自定义排序 数值排序: 点击需要排序的一列一个格子,排序 自定义排序,比如:添加关键...

  • JS中sort+localeCompare实现中文排序

    数组排序是经常用到的,数组中sort方法默认使用acsII码排序,若要实现中文排序就比较麻烦了,看看下面如何实现 ...

  • 排序算法

    冒泡排序 PHP OC 快速排序

网友评论

    本文标题:PHP实现中文自定义排序,形如:一二三四排序

    本文链接:https://www.haomeiwen.com/subject/sshyyhtx.html