我是一个php newb,在理解如何解析json api返回时遇到了一些问题。下面是json的一个片段:
{
"results": [
{
"list_name": "",
"display_name": "",
"updated": "",
"bestsellers_date": "",
"published_date": "",
"isbns": [
{
"isbn10": "",
"isbn13": ""
},
{
"isbn10": "",
"isbn13": ""
}
],
"book_details": [
{
"title": "Book author",
"description": "Book description"",
"contributor": "",
"author": "Book author",
"contributor_note": "",
"price": ,
"age_group": "",
"publisher": "",
"primary_isbn13": "1010101010",
"primary_isbn10": "1010101010101"
}
],
"reviews": [
{
"book_review_link": "",
"first_chapter_link": "",
"sunday_review_link": "",
"article_chapter_link": ""
}
]
},
这是我到目前为止拥有的php。
<?php
$json=file_get_contents('the url for the api return');
// create array
$json_a=json_decode($json,true);
foreach($json_a[results] as $r)
{
echo '
List: '.$r[list_name].'
<br />
Title: '.$r[title].'
<br>
Description: '.$r[description].'
<br />
<br />
';
}
?>
我从api得到一个返回值,并且它为'list_name‘提供了正确的值,但是'title’和'description‘仍然没有填充;所以,我知道我没有访问这些子键(?)正确无误。获取这些元素的正确语法是什么?
非常感谢你们在这方面能提供的任何指导。提前谢谢。
发布于 2011-09-09 09:25:47
标题和描述在一个子元素"book_details“中,这个子元素本身是一个数组
应该是
$r['book_details'][0]['title']
和
$r['book_details'][0]['description']
只需在PHP中打开错误报告,就会发现您试图访问的索引并不存在。
更新:添加数组索引
发布于 2011-09-09 07:31:11
$p
是从哪里来的?
您需要像$r->book_details[0]->description
这样的内容来获取book_details数组的第一项的描述。
发布于 2011-09-09 07:36:24
Why is $foo[bar] wrong?
始终使用引号将字符串文字数组索引引起来。例如,$foo‘’bar‘是正确的,而$foobar是错误的。但是为什么呢?在旧脚本中经常会遇到这种语法:
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>
来源: php.net
https://stackoverflow.com/questions/7355633
复制相似问题