【发布时间】:2019-10-01 04:19:00
【问题描述】:
我是编程新手,所以也许它很简单,但是当我运行脚本时,它给出的输出是 return $response 没有定义,但它是在数组中定义的。
已经尝试移动 return 语句,但没有帮助
这只是一段代码,但这是产生问题的部分
function request($opt, $data) {
$request = curl_init();
foreach ($data as $status) {
$data_string = json_encode($status);
echo "Json: " . $data_string . PHP_EOL;
$headers = array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
);
$url = ENDPOINT . $opt['object'];
curl_setopt($request, CURLOPT_URL, $url);
curl_setopt($request, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($request, CURLOPT_POST, TRUE);
curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($request, CURLOPT_USERPWD, USERNAME . ":" . PASSWORD);
$response = curl_exec($request);
if ($response == FALSE) {
die('<p>Curl failed: ' . curl_error($request) . '</p>');
}
}
return $response;
}
【问题讨论】:
-
如果
$data为空/不可迭代,则未定义。 -
确实,
$response是有条件地定义的。当它没有定义时,你会得到 Undefined variable 错误 -
还要注意你在循环中覆盖了你的
$response,所以在这里使用循环似乎没有多大意义。 -
无需每次循环重新分配
$url。每次都是相同的值,所以在循环之前设置一次即可。