JSON到PHP错误
我的JSON文件的格式如下:JSON到PHP错误,php,json,Php,Json,我的JSON文件的格式如下: { "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"
{
"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变量。使用代码:
$jsonData = file_get_contents('js/json/library.json');
$data = json_decode($jsonData, true);
$gameImage = $data['image'];
我只使用了一个示例,但我得到以下错误:
Notice: Undefined index: image in C:\MAMP\htdocs\iniDb.php on line 21
我不明白我错在哪里 解码JSON后,由于使用了
,true
选项,结果输出如下所示:
$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"
]
]
]
foreach ($data as $member) {
foreach ($member['library'] as $library) {
foreach ($library as $element) {
echo $element['image'];
}
}
}
由此看来,$data['image']
显然找不到了
你必须这样做:
$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"
]
]
]
foreach ($data as $member) {
foreach ($member['library'] as $library) {
foreach ($library as $element) {
echo $element['image'];
}
}
}
$data是一个多维数组,由第一级的关联数组(“库”键)和第二级的两个数字数组(0和1是键)组成。 下面的代码应该是:
$data['library'][0]['image']
如果要遍历解码的json数组集合,请按照以下方式执行:
// 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>";
}
打印($data)
查看。json_last_error()
可能$data['library'][0]['image']代码>@AbraCadaver这样做之后,我看到数组中有数组,但仍然不明白为什么分配图像会引发错误?我是否需要使用循环来处理JSON数组?我用下面的例子作为指导,[link[()@pitch0Wander为什么要投否决票。我的答案可能是错误的,但任何人都必须解释为什么!看来,主题启动者现在需要非常简单的答案来作为“随时可用”的解决方案。已补偿。@向导我明白你的意思。但OP说他想要“将每个变量分配给其关联的JSON变量”,然后添加了“我只使用了一个作为示例”:所有这一切导致他认为需要迭代。总之,非常感谢您的支持!