public function getBatch(string $batchId,int $flag = 0){
$flag++;
if ($flag > 5) return [];
echo $flag."\n";
$apiUri = $this->apiUri.'&task_id='.$batchId;
$res = CurlService::curl_get($apiUri,[],[]);
$res = json_decode($res,true);
if (isset($res['errcode']) && $res['errcode'] == 0 ){
return $res;
}else{
$this->getBatch($batchId,$flag);
}
}
$res 是有值的为数组。但是返回结果却为null
这是因为在递归调用自身时没有加return。
正确写法:
public function getBatch(string $batchId,int $flag = 0){
$flag++;
if ($flag > 5) return [];
echo $flag."\n";
$apiUri = $this->apiUri.'&task_id='.$batchId;
$res = CurlService::curl_get($apiUri,[],[]);
$res = json_decode($res,true);
if (isset($res['errcode']) && $res['errcode'] == 0 ){
return $res;
}else{
return $this->getBatch($batchId,$flag);
}
}