首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSON到PHP错误

JSON到PHP错误
EN

Stack Overflow用户
提问于 2016-03-02 21:32:42
回答 3查看 55关注 0票数 0

我的JSON文件格式如下:

代码语言:javascript
运行
复制
{
    "library": [{
        "image": "css/covers/rainbow6siege.jpg",
        "title": "Tom Clancy's Rainbow Six: Siege",
        "system": ["PC", "Xbox-360", "Xbox One", "PS4"],
        "genre": ["Shooter"],
        "pegi_rating": "18",
        "developer": "Ubisoft",
        "release_year": "2015",
        "max_team": "5"
    }, {
        "image": "css/covers/thedivision.jpg",
        "title": "Tom Clancy's The Division",
        "system": ["PC", "Xbox-360", "Xbox One", "PS4"],
        "genre": ["Shooter", "MMO", "Action RPG"],
        "pegi_rating": "15",
        "developer": "Ubisoft",
        "release_year": "2016",
        "max_team": "3"
    }]
}

我已经连接到数据库,获取了文件的内容,对其进行了解码,并试图将每个变量分配给其关联的JSON变量。使用代码:

代码语言:javascript
运行
复制
  $jsonData = file_get_contents('js/json/library.json');
  $data = json_decode($jsonData, true);

  $gameImage = $data['image'];

我只使用了一个示例,但是我得到了以下错误:

代码语言:javascript
运行
复制
Notice: Undefined index: image in C:\MAMP\htdocs\iniDb.php on line 21

我不明白我哪里出了问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-02 21:50:17

您的$data是一个多维数组,由第一级的关联数组(“库”键)和第二级的两个数字数组(0和1是键)组成。下面的代码应该这样做:

代码语言:javascript
运行
复制
$data['library'][0]['image']
票数 0
EN

Stack Overflow用户

发布于 2016-03-02 21:47:06

由于使用了, true选项,一旦解码了JSON,结果的输出如下所示:

代码语言:javascript
运行
复制
$data = [
  "library" => [
    [
        "image" => "css/covers/rainbow6siege.jpg",
        "title" => "Tom Clancy's Rainbow Six => Siege",
        "system" => ["PC", "Xbox-360", "Xbox One", "PS4"],
        "genre" => ["Shooter"],
        "pegi_rating" => "18",
        "developer" => "Ubisoft",
        "release_year" => "2015",
        "max_team" => "5"
    ],
    [
        "image" => "css/covers/thedivision.jpg",
        "title" => "Tom Clancy's The Division",
        "system" => ["PC", "Xbox-360", "Xbox One", "PS4"],
        "genre" => ["Shooter", "MMO", "Action RPG"],
        "pegi_rating" => "15",
        "developer" => "Ubisoft",
        "release_year" => "2016",
        "max_team" => "3"
    ]
  ]
]

由此可见,$data['image']是找不到的!

你必须这样做:

代码语言:javascript
运行
复制
foreach ($data as $member) {
  foreach ($member['library'] as $library) {
    foreach ($library as $element) {
      echo $element['image'];
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2016-03-02 21:57:14

如果您想迭代已解码的json数组集合,您可以这样做:

代码语言:javascript
运行
复制
// your json here
$data = json_decode('{
    "library": [{
        "image": "css/covers/rainbow6siege.jpg",
        "title": "Tom Clancy\'s Rainbow Six: Siege",
        "system": ["PC", "Xbox-360", "Xbox One", "PS4"],
        "genre": ["Shooter"],
        "pegi_rating": "18",
        "developer": "Ubisoft",
        "release_year": "2015",
        "max_team": "5"
    }, {
        "image": "css/covers/thedivision.jpg",
        "title": "Tom Clancy\'s The Division",
        "system": ["PC", "Xbox-360", "Xbox One", "PS4"],
        "genre": ["Shooter", "MMO", "Action RPG"],
        "pegi_rating": "15",
        "developer": "Ubisoft",
        "release_year": "2016",
        "max_team": "3"
    }]
}'
, true);

foreach ($data['library'] as $library)
{
    echo "<pre>";
    foreach ($library as $key => $value)
    {
        echo "<span style='color: #cc0000;'>$key</span> = ";
        echo trim(print_r($value, true)) ."\r\n";
    }
    echo "</pre><hr>";
}

产出:

例如,如果您想要每个库项的标题,这就是您要做的:

代码语言:javascript
运行
复制
foreach ($data['library'] as $library)
{
    echo "title = ". $library['title'];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35758505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档