收到无法识别的索引错误,请在此处阅读有关该错误的线程,但仍不了解

时间:2019-06-10 04:33:24

标签: php

我正在尝试从数据文件中输出所有电影标题。并不断出现无法识别的索引错误,尽管阅读了说明,但我仍然不明白,也许是因为英语不是我的母语。

我的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

2 个答案:

答案 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

中实际需要的密钥