风叶 2021-10-14 15:14:00 338次浏览 0条评论 0 0 0

常见业务流程中的二维数组的简单处理方法

二维数组按照某个 key 去重

    /*
     * 二维数组去重
     */
    public function assoc_unique($arr, $key)
    {
        $tmp_arr = array();
        foreach ($arr as $k => $v) {
            if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
                unset($arr[$k]);
            } else {
                $tmp_arr[] = $v[$key];
            }
        }
        sort($arr); //sort函数对数组进行排序
        return $arr;
    }

按照数组中的某个值进行分组

    /*
     * 按某个值进行分组
     */
    public static function getResult($model, $key = 'type', $content = 'content')
    {
        $query = $result = [];
        if (!empty($model)) {
            foreach ($model as $k => $v) {
                $query[$v[$key]][] = $v;
            }
        }
        $i = 0;
        if (!empty($query)) {
            foreach ($query as $k => $v) {
                $result[$i][$key] = $k;
                !empty($content) ? $result[$i][$content] = $v : '';
                $i++;
            }
        }
        return $result;
    }

一行代码完成数组按照某个字段进行排序

    /**
     * 二维数组根据字段进行排序
     * @params array $array 需要排序的数组
     * @params string $field 排序的字段
     * @params string $sort 排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
     */
    function arraySequence($array, $field, $sort)
    {
        array_multisort(array_column($array,$field),$sort,$array);
    }

删除二维数组中相同项的数据

    /**
     * 删除二维数组中相同项的数据,(一般用于数据库查询结果中相同记录的去重操作)
     *
     * @param array $_2d_array 二维数组,类似:
     *     $tmpArr = array(
     *         array('id' => 1, 'value' => '15046f5de5bb708e'),
     *         array('id' => 1, 'value' => '15046f5de5bb708e'),
     *     );
     * @param string $unique_key 表示上述数组的 "id" 键,或者 "value" 键
     *
     * @return mixed
     */
    function unique_2d_array_by_key($_2d_array, $unique_key)
    {
        $tmp_key[] = array();
        foreach ($_2d_array as $key => &$item) {
            if (is_array($item) && isset($item[$unique_key])) {
                if (in_array($item[$unique_key], $tmp_key)) {
                    unset($_2d_array[$key]);
                } else {
                    $tmp_key[] = $item[$unique_key];
                }
            }
        }
        return $_2d_array;
    }
    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册