PHP JSON foreach数组问题

时间:2016-04-25 06:46:19

标签: php arrays json foreach

我正在尝试使用PHP从API中显示一些JSON数据。我需要使用foreach来返回我的所有结果,但嵌套在它们中的是一个数组。该数组是“亮点”,有时具有“描述”,有时具有“内容”,有时两者都有。我需要在foreach或forething中做一些foreach,但我尝试的只是返回“Array”。

这是JSON ......

https://api.data.gov/gsa/fbopen/v0/opps?q=lte+test+bed+system&data_source=FBO&limit=100&show_closed=true&api_key=CTrs3pcYimTdR4WKn50aI1GcUxyL9M4s1fyBbSer

这是我的PHP ...

$json_returned = file_get_contents("JSON_URL");
$decoded_results = json_decode($json_returned, true);

echo "Number Found:".$decoded_results['numFound']."</br> ";
echo "Start:".$decoded_results['start']."</br>";
echo "Max Score:".$decoded_results['maxScore']."</br>";

foreach($decoded_results['docs'] as $results){
echo "Parent Link T:".$results['parent_link_t']."</br>";
echo "Description:".$results['highlights']['description']."</br>";
}

显然我正在使用的工作版本有更多的字段编程但是我将它们剪掉以保持这个代码简短而简单,并展示我除了一个foreach中的“hightlights”字段之外还有其他所有内容。 JSON返回要求我保留foreach中的所有内容,那么如何在其中显示数组呢?

感谢您的帮助和感谢,即使您可以贡献,也要花时间阅读本文。

2 个答案:

答案 0 :(得分:1)

&#39;描述&#39;是一个包含一个元素的数组,因此您可以使用它。

echo 'Description:' . $results['highlights']['description'][0];

如果有时候有描述&#39;有时&#39;内容&#39;。使用isset检查它是哪一个,或者即使两者都相同也可以相应打印。

// for description
if(isset($results['highlights']['description'])) {
   echo 'Description:' . $results['highlights']['description'][0];
}
// for content
if(isset($results['highlights']['content'])) {
   echo 'Content:' . $results['highlights']['content'][0];
}

希望这有帮助。

答案 1 :(得分:0)

查看php array_column()函数:http://php.net/manual/de/function.array-column.php