我是一个php新手,有一些问题理解如何解析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'仍然未填充;所以,我知道我没有正确地访问那些子键。获取这些元素的正确语法是什么?
非常感谢你们在这方面提供的任何指导。
title和description位于子元素"book_details"中,该子元素本身也是一个数组
应为
$r['book_details'][0]['title']
和
$r['book_details'][0]['description']
只要在PHP中打开错误报告,就会发现你试图访问的索引不存在。
更新:添加数组索引
$p
从何而来?
您想要类似$r->book_details[0]->description
的东西来获取book_details数组中第一项的描述。
为什么$foo[bar]是错误的?
总是在字符串字面量数组索引周围使用引号。例如,$foo['bar']是正确的,而$foo[bar]则不是。但是为什么呢?在旧脚本中经常会遇到这种语法:
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>
来源:php.net
好吧,{
这意味着你有一个对象。也就是说,你通过$var->name访问它[
是一个数组,所以你可以循环通过它,如果你有东西在里面或者你访问的值$var['name']