用PHP进行基本json_解码

用PHP进行基本json_解码,php,wordpress,json,Php,Wordpress,Json,我正在尝试创建一个Wordpress插件,它将拉入一个JSON文件,并(使用循环)为JSON文件中的每个对象创建一个元素。然而,这个特定的JSON文件的格式是我从未见过的,因此我很难弄清楚如何提取数据。文件的开头和结尾用数组括号标记 这是我的建议 第一个对象如下所示: [{ "title": "Moderate earthquake - Fiji Region on June 5, 2014", "magnitude": "4.5", "location": "FIJI

我正在尝试创建一个Wordpress插件,它将拉入一个JSON文件,并(使用循环)为JSON文件中的每个对象创建一个元素。然而,这个特定的JSON文件的格式是我从未见过的,因此我很难弄清楚如何提取数据。文件的开头和结尾用数组括号标记

这是我的建议

第一个对象如下所示:

[{
    "title": "Moderate earthquake - Fiji Region on June 5, 2014",
    "magnitude": "4.5",
    "location": "FIJI REGION",
    "depth": "334",
    "latitude": "-15.63",
    "longitude": "-176.92",
    "date_time": "2014-06-05T04:17:31+00:00",
    "link": "http://earthquake-report.com/2014/06/05/moderate-earthquake-fiji-region-on-june-5-2014/"
},
所以我有这个:

$json_feed_url = 'http://earthquake-report.com/feeds/recent-eq?json';
$args = array('timeout' => 120);
$json_feed = wp_remote_get($json_feed_url, $args);
$earthquake_data = json_decode($json_feed);
但是,我该如何把它拉进去并打印出来呢?我不能只使用$SECTURE\u data->title,我需要一种能够使用索引从每个对象中提取的方法,因为它们没有名称。我需要从0索引开始并从那里开始吗

echo $earthquake_data[0]; 
echo $earthquake_data[0]{$countervariable->title};

正如我所说的,我想从文档中最后25个对象中的每一个提取信息。任何帮助都将不胜感激

我刚下载了这个文件,因为我不使用wp

$json_feed_url = 'http://earthquake-report.com/feeds/recent-eq?json';
$args = array('timeout' => 120);
$json_feed = wp_remote_get($json_feed_url, $args);
$earthquake_data = json_decode($json_feed);

// $earthquake_data should be an array
foreach ($earthquake_data as $obj) {
  var_dump($obj);
  // example
  echo $obj->title;
}
诀窍是使用“json_解码(数据,true),然后PHP将所有对象转换为数组。只需几个“foreach”循环即可打印、选择等

下面是一些经过测试的示例代码

<?php
$dc = json_decode(file_get_contents('earthquake.json'), true);

foreach ($dc as $details) {
    echo '<strong>', $details['title'], '</strong><br />';
    foreach($details as $name => $value) {
        echo $name, ' => ', $value, '<br />';
    }
}

foreach($SECTURE\u data as$SECTURE\u data\u single){echo$SECTURE\u data\u single->title;}
.Hmm。。。当我像您所写的那样使用foreach函数时,我得到以下信息:警告:为foreach()提供的参数无效。这通常是因为它实际上不是一个数组,对吗?看起来它实际上并没有被创建为数组。我创建了一个小测试函数来发现:如果(!is_array($seasure_data)){echo'它不是一个数组!;}不用说,它会打印出“它不是一个数组!”。有什么想法吗?@thomasshellberg它将返回false,因为
json\u decode()
返回一个
对象。如果你想要一个
数组
,你可以使用类似
json\u decode($json\u feed,true)
(注意第二个参数
true
)@Darren False。JSON数组仍然是数组(0、1、2、3..keys)。但是,命名键将是对象属性。@thomasshellberg尝试使用
var\u dump($地震数据)
,并在OP中发布一个最小的结果。如果数据分析不正确,可能是
FALSE
。@Darren没问题-我的一天刚刚开始,我仍然需要早上的咖啡。我知道你的感受:)谢谢你的帮助!在将文件下载为.json并在本地使用后,这一点就起作用了。我还刚刚将“地震.json”改为提要URL,它也起了作用。如果我像以前那样使用wp_remote_get函数,它就不起作用了。我猜这一直都是问题所在。再次感谢@托马斯,很乐意帮忙