Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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和file_get_contents()中使用JSON访问子节点_Php_Json_File Get Contents - Fatal编程技术网

在PHP和file_get_contents()中使用JSON访问子节点

在PHP和file_get_contents()中使用JSON访问子节点,php,json,file-get-contents,Php,Json,File Get Contents,好吧,我被难住了 我尝试过许多不同的方法,我花了好几个小时的大部分时间来寻找我的确切情况,但都无济于事,否则我会感到疲劳和失明 以下是使用文件_get_contents()从URI中提取的原始json: 正如您所看到的,这是一个非常简单的请求,我拥有除networking_v4和networking_v6中嵌套的数据之外的所有数据 我试图访问如下内容: 'ipv4' => $json->networking_v4->addr, 'ipv4dev' => $json->

好吧,我被难住了

我尝试过许多不同的方法,我花了好几个小时的大部分时间来寻找我的确切情况,但都无济于事,否则我会感到疲劳和失明

以下是使用文件_get_contents()从URI中提取的原始json:

正如您所看到的,这是一个非常简单的请求,我拥有除networking_v4和networking_v6中嵌套的数据之外的所有数据

我试图访问如下内容:

'ipv4' => $json->networking_v4->addr,
'ipv4dev' => $json->networking_v4->if,
'ipv6' => $json->networking_v6->addr,
'ipv6dev' => $json->networking_v6->if,
下面是代码的完整快照:

  $content = file_get_contents($url);
  $json = json_decode($content);
  $server_lastupd = $json->last_update;
  $server_firstupd = $json->first_update;
  $server = array(
    'id' => $json->id,
    'name' => $json->name,
    'os' => $json->os,
    'cputype' => $json->cpu_type,
    'ipv4' => $json->networking_v4->addr,
    'ipv4dev' => $json->networking_v4->if,
    'ipv6' => $json->networking_v6->addr,
    'ipv6dev' => $json->networking_v6->if,
    'status' => $json->status,
    'lastupd' => $json->$server_lastupd,
    'firstupd' => $json->$server_firstupd,
    'notifications' => $json->notifications_count,
    'ip' => $json->ip_whois->ip,
    'hostname' => $json->ip_whois->hostname,
    'city' => $json->ip_whois->city,
    'region' => $json->ip_whois->region,
    'country' => $json->ip_whois->country,
    'loc' => $json->ip_whois->loc,
    'org' => $json->ip_whois->org,
    'postal' => $json->ip_whois->postal,
    'dctag' => $json->additonal_fields->dctag,
    'source' => "XXX"
  );
  return $server;
因此,我的问题是,我似乎无法访问networking_v4和networking_v6中的子内容

如果能在这方面提供任何帮助,我将不胜感激。昨晚我被困了6个小时,今天又被困了几个小时,所以我放弃了,有人请给我点灯!
非常感谢:)

试试
$json->networking\u v4[0]->addr


networking_v4
networking_v6
键都指向数组,因此您需要选择要查看的索引。前者只有一个元素,因此很容易选择索引
0
,但后者有多个元素,因此您需要找出所需的元素。

看起来这些元素嵌套在[{“键”:“值”}、{“键”:“值”}]方括号中的数组中。您尝试过吗

ipv4 => $json->networking_v4[0]->addr,

请参阅json中的括号?
[]
?这些是数组,而不是对象。以后请查看
var\u dump($json)
print\r($json)
这就成功了!真不敢相信它会这么简单,将来还需要记住。是的,对某些人来说,它们是嵌套数组或子数组,但是,我不太明白如何访问它们,我尝试了另一种方法忘记了这个方法,不管它如何工作,您的回答非常感谢。非常感谢:)也注意到了我你自己的拼写错误更进一步!:D再次感谢@reginol\u Blindhop
ipv4 => $json->networking_v4[0]->addr,