PHP 拼接变量名循环使用


问题:ThinkPHP5 做了一个统计,需要根据来源表($source)中的数据,查另外一个表中的数据,每一个来源对应的数据都要单独处理。来源表中有13条数据,我挨个取出来id对应着查询,写了好多代码。突发奇想,我能不能把ID拼接到变量名上使用,条件变量名都可以对应起来,然后自己就可以不用搬砖了!查了查可行,具体实现代码如下:

        $source = $source_mod->field('id')->order('sort desc')->select();//查询来源表中的自己需要的参数
        foreach ($source as $value){
            $soure_id = $value['id'];//获取单个参数处理
            $arrData{$soure_id} = [];//拼接变量名
            $lastYearNums{$soure_id} = $statistics_mod
                ->field(['CONCAT(year,"-",month)' =>'yearmonth','total'])
                ->where('source='.$soure_id.' and (year>'.$yearStart.' or (year='.$yearStart.' and month>'.$monthStart.'))')
                ->order('year asc,month asc')
                ->select();
            foreach ($lastYearNums{$soure_id} as $key => $itemNums){
                array_push($arrData{$soure_id},$itemNums['total']);
            }
            $monthStartTime = strtotime(date('Y-m-01'));
            $monthEndTime = strtotime(date('Y-m-01').' +1 month');
            //本月提交数量
            $monthNums{$soure_id} = $bl_mod
                ->field('count("id") as totalnum')
                ->where('source',$soure_id)
                ->whereTime('create_time', 'between', [$monthStartTime, $monthEndTime])
                ->find();
            array_push($arrData{$soure_id},$monthNums{$soure_id}['totalnum']);
            $this->assign('echartsData'.$soure_id, implode(",",$arrData{$soure_id}));
        }


最新回复 (0)
发新帖