PHP二维数组操作(去重,重排序,按某个值排序,按某字段分割)

1、根据指定值进行去重

public function array_unset_tt($arr, $key) {
        $res = array();
        foreach ($arr as $value) {
            //查看有没有重复项
            if (isset($res[$value[$key]])) {
                // 有则销毁
                unset($value[$key]); 
            } else {
                $res[$value[$key]] = $value;
            }
        }
        return $res;
    }

2、键值重新排序

public function reformKeys($array) {
        if (!is_array($array)) {
            return $array;
        }
        $keys = implode('', array_keys($array));
        if (is_numeric($keys)) {
            $array = array_values($array);
        }
        //$array = array_map('reform_keys', $array);
        return $array;
    }

3、按照某个值就行排序

// sort_asc为正序
// SORT_DESC为倒序
public function mySort($arrays, $sort_key, $sort_order = SORT_ASC, $sort_type = SORT_NUMERIC) {
        if (empty($arrays)) {
            return $arrays;
        }
        if (is_array($arrays)) {
            foreach ($arrays as $array) {
                if (is_array($array)) {
                    $key_arrays[] = $array[$sort_key];
                } else {
                    return false;
                }
            }
        } else {
            return false;
        }
        array_multisort($key_arrays, $sort_order, $sort_type, $arrays);
        return $arrays;
    }

4、按照某个字段进行分割

// data目标数组
// $field=指定值
public function getNewarr($data, $field) {
        $newarr = [];
        foreach ($data as $key => $val) {
            $i = 0;
            foreach ($data as $k => $v) {
                if ($val[$field] == $v[$field]) {
                    $newarr[$v[$field]][$i] = $v;
                    $i++;
                }
            }
        }
        $newarrs = [];
        $j = 0;
        foreach ($newarr as $key => $value) {
            $newarrs[$j][$field] = $key;
            $newarrs[$j]['list'] = $value;
            $j++;
        }
        return $newarrs;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值