thinkphp5关于递归的理解

//递归函数 实现无限级分类列表

!/^1[3-9]\d{9}$/.test(phone)

function get_cate_list($list,$pid=0,$level=0) {
    static $tree = array();
    foreach($list as $row) {
        if($row['pid']==$pid) {
            $row['level'] = $level;
            $tree[] = $row;
            get_cate_list($list, $row['id'], $level + 1);
        }
    }
    return $tree;
}
//引用方式实现 父子级树状结构
function get_tree_list($list){
    //将每条数据中的id值作为其下标
    $temp = [];
    foreach($list as $v){
        $v['son'] = [];
        $temp[$v['id']] = $v;
    }
    //获取分类树
    foreach($temp as $k=>$v){
        $temp[$v['pid']]['son'][] = &$temp[$v['id']];
    }
    return isset($temp[0]['son']) ? $temp[0]['son'] : [];
}

//保存的检测

public function save(Request $request){
        //去其他值
        $params = $request->except(['admin-role-save','/admin/type/save_html']);
//        var_dump($params);die;

        if(empty($params['type_name'])){
            $this->error('类型名称不为空');
        }
        \think\Db::startTrans();
        try{
            //添加模型表
            $type = \app\admin\model\Type::create(['type_name'=>$params['type_name']]);
            //添加规格名称
            $specData = [];
            foreach($params['spec'] as $k=>$v){
                $specData[]= [
                    'type_id'=>$type->id, //模型表外键
                    'spec_name'=>$v['name'],//规格名称
                    'sort'=>$v['sort']  //排序字段

                ];
            }
            $speclModel = new \app\admin\model\Spec();
            $spec = $speclModel->saveAll($specData);
            $ids  =  array_column($spec,'id');
            //添加规格值
            $spec_value = [];
            foreach($params['spec'] as $k=>$v){
               foreach ($v['value'] as $kk=>$vv){
                   $spec_value[]= [
                       'type_id'=>$type->id, //模型表外键
                       'spec_value'=>$vv,//规格名称
                       'spec_id'=>$ids[$k],
                   ];
               }
            }
            $speclValueModel = new \app\admin\model\SpecValue();
             $speclValueModel->saveAll($spec_value);
            //添加属性表
            $spec_attr = [];
            foreach($params['attr'] as $k=>$v){
                $spec_attr[]= [
                    'type_id'=>$type->id, //模型表外键
                    'attr_name'=>$v['name'],//规格名称
                    'sort'=>$v['sort'], //排序字段
                    'attr_values'=>implode(',',$v['value'])
                ];
            }
            $attributeModel = new \app\admin\model\Attribute();
             $attributeModel->saveAll($spec_attr);
            // 提交事务
            \think\Db::commit();
            return json(['code'=>200, 'msg'=>'操作成功']);
        } catch (\Exception $e) {
            // 回滚事务
            \think\Db::rollback();
            $msg = $e->getMessage();
            return json(['code'=>201, 'msg'=>$msg]);
        }
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值