当前位置:  开发笔记 > 编程语言 > 正文

PHP注意:循环数组时未定义的索引

如何解决《PHP注意:循环数组时未定义的索引》经验,为你挑选了1个好方法。

我正在循环一个二维数组,如下所示:

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"
    )

谢谢!



1> Paul Dixon..:

只需用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至少是array_key_exists的两倍,可能是因为它是一个语言结构而不是常规函数调用.


isset不会发出通知,试试看.
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有