php array_key_exists,!empty和isset无故失败?

时间:2016-09-22 08:47:55

标签: php arrays string php-7 torrent

在ubuntu 16.0.4上的PHP 7.0.8 LTS可能有人给我一个提示,为什么当密钥明确存在时,数组密钥检查会失败,程序执行就会停止,即使启用了所有错误报告也没有解释。

数组元素中保存的数据类型是一个字符串,其中包含从fedora网站https://torrents.fedoraproject.org/下载的torrent文件

其他函数在此失败,例如!数组键上的空

此实例中的键为0

if(array_key_exists($index, $this->_webpage)){
            return $this->_webpage[$index];
        }else{
            /* throw notice */
            trigger_error("Array index is out of range. Can not get webpage.", E_USER_NOTICE);
            return FALSE;
        }

注意:iv一直使用同样的功能来检查网页是否已经下载并且它在同一个系统上工作,我只是将torrent解析添加到我的应用程序

1 个答案:

答案 0 :(得分:0)

摘要 array_key_exists 肯定会告诉您数组中是否存在键,而 isset 只会在键/变量存在时返回true如果变量为空字符串,false,array(),NULL,“0?,0和未设置的变量

,则不为null且为空返回true

更多详情

isset()

从PHP手册 - isset():

isset - 确定变量是否已设置且不是NULL

换句话说,仅当变量不为空时才返回true。

empty()

从PHP手册 - 空():

empty - 确定变量是否为空

换句话说,如果变量是空字符串,false,array(),NULL,“0?,0和未设置的变量”,它将返回true。

如果变量不存在,则empty()不会生成警告。

array_key_exists

来自PHP手册 - array_key_exists():

检查数组中是否存在给定的键或索引

因此,如果在数组中设置了给定的键,则array_key_exists()将返回TRUE。 key可以是数组索引可能的任何值。