数据库查找数据排序之后,使用array_merge组装数组;再根据二维数组的某个字段排序

这里面没有其他其他其他,然后客户在收货地址前写了很多个其他,导致了明明需要运费的,被这个聪明的客户占了便宜。变成了没有运费了!!!这是个bug!!!也不知道存在多久了。

修复过程:以为这样拼接了就能出来其他项目,谁知道还有规则的!!!就是要parent_id倒序才行。前端才能勾选,前端代码实在太复杂了。不好展示。

 

 

/**
 * 替换旧区域旧数组数据 by Mr.DJ  2020年5月9日11:15:28
 * @return mixed
 */
public static function getArrNew()
{
    $cache_arr_data = \Yii::$app->cache->get(CacheKeyEnum::DISTRICT_KEY);
    if (!$cache_arr_data) {
        //Mr.DJ合并其他区域
        $others=
[
['id' => 3268, 'name' => '其他', 'parent_id' => 1, 'level' => 'province'],
['id' => 3269, 'name' => '其他', 'parent_id' =>3268, 'level' => 'city'],
['id' => 3270, 'name' => '其他', 'parent_id' => 3269, 'level' => 'district']
];
    $data = District::find()->select(['id', 'name', 'parent_id', 'level'])->orderBy('parent_id')->asArray()->all();
        $data=array_merge($data,$others);
        foreach ($data as $key => $row) {
            $distance[$key] = $row['parent_id'];  //根据二维数组的字段继续排序。这个可以如下行进行多字段排序拓展
            //$distance[$key] = $row['level'];
        }
        array_multisort($distance, SORT_ASC, $data);
        $value = array_column($data, NULL, 'id');
        \Yii::$app->cache->set(CacheKeyEnum::DISTRICT_KEY, $value, 86400 * 30);
        return $value;
    }
    return $cache_arr_data;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值