如何使用PHP提取JSON数据

时间:2014-08-11 04:18:11

标签: php json

我正在尝试创建一个非常简单的php脚本,它可以从JSON文件(数组?)中提取数据并将其回显到页面。可悲的是,在PHP方面,我是一个完全新手。

我的目标是将所有IP地址和相应的客户端版本转储到这样的输出中......

"127.0.0.1" "/Satoshi:0.9.1/" 
"127.0.0.2" "/Satoshi:0.9.0/"
"127.0.0.3" "/Satoshi:0.9.0/"
"127.0.0.4" "/Satoshi:0.9.1/"

我可以获取转储所有数据的代码,但是我不知道如何在没有ip和客户端版本命名的情况下拉出ip和版本..如果这样甚至有意义的话?

这是代码。我需要什么来转储正确的数据?

<?php
$url = 'https://getaddr.bitnodes.io/nodes/1407675714.json';
$JSON = file_get_contents($url);

echo $JSON;

$data = json_decode($JSON);
var_dump($data);

?>

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

将哈希数组转换为某些非命名实体之一没有多大意义。我想你只需要按照以下方式转储它:

    foreach($data as $t)
    {
            echo("ip=".$t->ip." ua=".$t->ua);
    }

答案 1 :(得分:0)

这样的东西
<?php
$url = 'https://getaddr.bitnodes.io/nodes/1407675714.json';
$JSON = file_get_contents($url);

$data = json_decode($JSON);
$data = (array)$data; // cast from stdClass to array, as results have int keys

foreach($data['nodes'] as $results){
    echo $results[0]. " ". $results[3]."<br />";
}
?>

答案 2 :(得分:0)

我认为没有理由投射到数组。只需处理返回的对象。这个也有要求的双引号。

<?php
  $url = 'https://getaddr.bitnodes.io/nodes/1407675714.json';
  $json = file_get_contents($url);

  $data = json_decode($json);

  foreach($data->nodes as $results){
      echo "\"".$results[0]."\" \"".$results[3]."\"<br />";
  }
?>