public function getNumber($number,$num='1'){ //后面三位流水改成按照顺序生成 $num=str_pad($num,3,"0",STR_PAD_LEFT); $instrument_number = $number. $num; //查询是否被占用 $meterInfo = Meter::find()->where(['is_delete' => 0,'instrument_number' => $instrument_number])->asArray()->one(); if($meterInfo){ ++$num; $this->getNumber($number,$num); }else{ return $instrument_number; } }
上述例子会返回null,主要原因是调用递归函数的时候没有return
在$this->getNumber($number,$num)前面加return就可以了。