Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正在尝试获取非对象的属性_Php_Json - Fatal编程技术网

PHP正在尝试获取非对象的属性

PHP正在尝试获取非对象的属性,php,json,Php,Json,首先,我知道stackoverflow是完全由于这种错误,但没有一个是像我这样的,所以我张贴这个 我试图从api中获取JSON响应,当我试图回显它时,我得到了试图获取非object属性的错误 $apicalldata = file_get_contents("https://api.digitalocean.com/v1/droplets/?client_id=6356465465363546&api_key=f9a702abe442198a4168346435366436cc4cd21

首先,我知道stackoverflow是完全由于这种错误,但没有一个是像我这样的,所以我张贴这个

我试图从api中获取JSON响应,当我试图回显它时,我得到了
试图获取非object属性的
错误

$apicalldata = file_get_contents("https://api.digitalocean.com/v1/droplets/?client_id=6356465465363546&api_key=f9a702abe442198a4168346435366436cc4cd2138dfc");

$call = json_decode($apicalldata);

echo $call->droplets->id;
这是我使用的代码。我期待着这样的回应:

{
"status": "OK",
"droplets": [
  {
  "id": 100823,
  "name": "test222",
  "image_id": 420,
  "size_id":33,
  "region_id": 1,
  "backups_active": false,
  "ip_address": "127.0.0.1",
  "private_ip_address": null,
  "locked": false,
  "status": "active",
  "created_at": "2013-01-01T09:30:00Z"
}
 ]
 }
我为什么会有这个问题?
$call->drops->id
是否正确?
感谢您的时间

它看起来像是一个数组。试试这个

$droplets = $call->droplets;
$myDroplet = $droplets[0];
$myDropletID = $myDroplet->id;
echo $myDropletID;
*评论后更新*

$droplets = $call->droplets;

foreach($droplets as $droplet)
{
    $dropletID = $droplet->id;
    echo $dropletID;
}
试试这个

$call = json_decode($apicalldata);
foreach($call->Droplet as $adm)
{
echo "ID ".$adm->id."<br/>";
}
$call=json\u decode($apicalldata);
foreach($call->Droplet as$adm)
{
回显“ID”。$adm->ID.“
”; }
您的JSON可能无效,
$call
为空。可能
$call
没有
drops
键,因此
$call->drops
为空。如果您使用
var\u dump($call,json\u last\u error())
您会发现问题所在。据我所知,您的URL提供了
{“状态”:“错误”,“错误消息”:“拒绝访问”,“消息”:“拒绝访问”}
。您是否尝试实际打印
$apicalldata
变量以查看您收到的响应?检查您收到的响应?可能您得到了访问错误或类似的$call->drops[0]->id。注意到[0]了吗?水滴看起来像是样本中的一个数组。print\r($call)将向您显示所获取数据的结构。$call之后,[drops][0][id]应该向您显示id。它可以工作,但是否可以将其放入while循环中,以便输出每个液滴的id?当然可以。查看我的更新。仅供参考,你应该养成在问题中提出你想要的东西的习惯。