PHP注意:循环数组时未定义的索引
发布时间:2020-12-13 16:01:33 所属栏目:PHP教程 来源:网络整理
导读:我正在循环一个二维数组,如下所示: if (!empty($aka)) { foreach ($aka as $ak) { if($ak["lang"]=="es") { $sptitle=$ak["title"]; } }} 很简单.如果数组($aka)不为空,我循环通过它,当它发现“lang”索引等于“es”时,我只是在$sptitle中保存该索引的“tit
我正在循环一个二维数组,如下所示:
if (!empty($aka)) { foreach ($aka as $ak) { if($ak["lang"]=="es") { $sptitle=$ak["title"]; } } } 很简单.如果数组($aka)不为空,我循环通过它,当它发现“lang”索引等于“es”时,我只是在$sptitle中保存该索引的“title”值. 问题是数组($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"]; } } } 如果你不知道布尔运算符如何&&可以短路,如果第一个操作数为假,则不会评估第二个操作数.在第二个操作数中对它进行操作之前,你会经常看到这个习惯用于检查某些东西的可用性. 您也可以使用array_key_exists(‘lang’,$aka)而不是isset,但它的语义略有不同 – 如果元素设置为null,则返回true,其中isset将返回false. 有趣的是,isset is at least twice as fast as array_key_exists,可能是因为它是一种语言结构而不是常规的函数调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |