我正在尝试从数据文件中输出所有电影标题。并不断出现无法识别的索引错误,尽管阅读了说明,但我仍然不明白,也许是因为英语不是我的母语。
我的json文件:
"movies": [
"Jurassic Park",
"James Bond",
"once upon a time in the west",
"Waterworld"
],
"recipes": [
"Lasagne",
"Pizza",
"Salad"
]
}
我的php文件:
/**
* Get the data from a JSON file.
*
* @return string
*/
function getData($filename)
{
$json = file_get_contents($filename);
return json_decode($json);
}
echo '<ul>';
foreach(getData('04-data.json') as $movie) {
echo '<li>';
echo ($movie['04-data.json']);
echo '<li>';
}
echo '</ol>';
错误:注意:未定义索引:第20行的C:\ xampp \ htdocs \ 04-fix-me.php中的04-data.json
答案 0 :(得分:2)
仔细查看您的代码后,我知道您必须在foreach()
foreach($array->movies as $movie) { // do $array->movies
echo '<li>';
echo $movie; // use $movie
echo '<li>';
}
注意:-
1。json_decode()
(不带第二个参数为true
)将提供一个stdClass对象数组。
2。由于您需要访问电影,因此请在$array->movies
数组上申请foreach
要理解的示例示例:-https://3v4l.org/6aTIY
如果您将在true
中应用json_decode()
,则foreach()
语法将变为
foreach($array['movies'] as $movie) {
//rest things are same
}
答案 1 :(得分:0)
我不确定我该如何正确地解释这一点,但问题出在这里:
echo ($movie['04-data.json']);
$movie
已被解码。 04-data.json
是您要打开的文件的名称。除非您希望解码的json在文件名下包含某些内容(这不太可能),否则这是错误的。它应该是解码后的json的密钥。
如果您不知道实际需要什么密钥,请使用var_dump($movie)
。这将显示您在$movie