我正在像这样循环一个二维数组:
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/