PHP 通知 : Undefined index when looping array

标签 php arrays

我正在像这样循环一个二维数组:

if (!empty($aka)) {
    foreach ($aka as $ak) {
        if($ak["lang"]=="es") {
            $sptitle=$ak["title"];
        }
    }
}

很简单。如果数组 ($aka) 不为空,我将循环遍历它,当它发现“lang”索引等于“es”时,我只是将该索引的“title”值保存在 $sptitle 中。

问题是数组 ($aka) 包含大量信息,有时没有“lang”索引...我收到此错误:注意:未定义索引:lang。

我该如何解决这个问题???

这是数组的摘录,以帮助您理解。请注意,[1] 没有 [lang] 索引,但 [2] 确实有:

[1] => Array
    (
        [title] => "The Lord of the Rings: The Motion Picture"
        [year] => ""
        [country] => "USA"
        [comment] => "promotional title"
    )

[2] => Array
    (
        [title] => "Señor de los anillos: La comunidad del anillo, El"
        [year] => ""
        [country] => "Argentina"
        [comment] => "Chile, Mexico, Peru, Spain"
        [lang] => "es"
    )

谢谢!

最佳答案

isset 测试一下,例如

if (!empty($aka)) {
        foreach ($aka as $ak) {
                if(isset($ak["lang"]) && ($ak["lang"]=="es")) {
                        $sptitle=$ak["title"];
                }
        }
}

如果您不知道像 && 这样的 bool 运算符是如何被短路的,那么如果第一个操作数为 false,则不会计算第二个操作数。在第二个操作数中对某物进行操作之前,您会经常看到这个习语用于检查某物的可用性。

你也可以使用 array_key_exists ('lang', $aka) 而不是 isset,但它的语义略有不同 - 如果元素设置为 null,它将返回 true,而 isset 将返回 false。

有趣的是,isset is at least twice as fast as array_key_exists ,可能是因为它是一种语言构造而不是常规函数调用。

关于PHP 通知 : Undefined index when looping array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/645788/

相关文章:

c - fscanf 和二维整数数组

javascript - 从 Node.js 中的 GetALexDataInJSONResult JSON 数组读取值

c++ - 从 main 创建一个合并两个数组 C++ 的函数

子域上的 PHPSESSID Cookie 相互冲突

javascript - 向 js 函数发送一个 id。与 ' and the "一起丢失

PHP如何显示mysql select查询到表

python - 以 1024 为一组在 numpy 数组中填写数字

java - 使二维数组成为属性,JAVA

PHP 文件既没有 move 也没有未 move

php - 如何测试 facebook "like"按钮?