PHP注意:尝试获取非对象错误的属性
我试图从一个网页上获取数据,该网页大部分时间只显示值0,但有时会变成这样PHP注意:尝试获取非对象错误的属性,php,syntax-error,notice,Php,Syntax Error,Notice,我试图从一个网页上获取数据,该网页大部分时间只显示值0,但有时会变成这样 {"deals":[{"symbol":"SymbolTest","type":"TestCall","amount":"0.00","duration":"30","durationUnit":"m","date":"2017.07.12 7:55:10 PM"}]} 但此处仅显示此文本,而不是0,持续约1-2秒 因此,我创建了一个脚本,如果值从0更改为其他值,它会不断检查网页。如果显示另一条文本,我将通过IFTTT在
{"deals":[{"symbol":"SymbolTest","type":"TestCall","amount":"0.00","duration":"30","durationUnit":"m","date":"2017.07.12 7:55:10 PM"}]}
但此处仅显示此文本,而不是0,持续约1-2秒
因此,我创建了一个脚本,如果值从0更改为其他值,它会不断检查网页。如果显示另一条文本,我将通过IFTTT在手机上收到通知,其中包含我需要的重要数据。(理论上)这就是我被困的地方。我想我一切都对了,但我就是找不到我的错误
这是我当前的代码:
function sendNotification($url, $fields) {
//url-ify the data for the POST
$fields_string = '';
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
}
$url = 'http://example.com:54321/?request=deals&token=example';
$notifyUrl = 'https://maker.ifttt.com/trigger/dealreceived/with/key/examplekey';
while (true) {
$content = file_get_contents($url);
if ($content != '0') {
echo 'No 0 found -IFTTT request sent';
$data = json_decode($content);
$notificationData = [];
foreach ($data->deals as $deal) {
$notificationData = [
'value1' => $deal->symbol,
'value2' => $deal->type,
'value3' => $deal->duration
];
sendNotification($notifyUrl, $notificationData);
}
}
}
我得到的错误如下:
PHP Notice: Trying to get property of non-object in /home/example.cloudwaysapps.com/example/public_html/watch.php on line 36
PHP Warning: Invalid argument supplied for foreach() in /home/example.cloudwaysapps.com/example/public_html/watch.php on line 36
这是第36行:
foreach ($data->deals as $deal) {
任何建议都将不胜感激。不幸的是,我被卡住了。这里有些地方你可能会失败:
file\u get\u content
-您应该检查它是否返回false-可能您根本无法获取内容。
json_decode
-如果语法错误,则可能返回false,你应该检查它,如果它是假的,你可以检查json_last_error
以查看错误是什么。var_dump$data-它不是一个对象。。是的,尝试var_转储整个$data,看看你得到了什么结果如果我理解正确,我可以像这样做foreach($data[0]->deals as&deal){谢谢你现在就试试看!