警告:array_key_exists()期望参数2为数组,给定布尔值

时间:2012-10-05 13:15:38

标签: php

我有一段代码,用于检查数组中存在的给定键。但是当执行这段代码时,我收到错误“警告:array_key_exists()期望参数2是数组,给定布尔值”。我是php新手,不知道导致此错误的原因。请帮我。

$structure = imap_fetchstructure($connection, $id, FT_UID);

        if (array_key_exists('parts', $structure))
        {
};

3 个答案:

答案 0 :(得分:13)

为防止有人将boolean或null传递给函数,您可以在使用之前添加一个简单的检查以查看$structure是否为数组:

    if (is_array($structure) && array_key_exists('parts', $structure))
    {
       //...magic stuff here 
    }

原始代码“原因”的简单答案是imap_fetchstructure()没有找到请求的消息,而是返回falsenull0。文档http://php.net/manual/en/function.imap-fetchstructure.php并未指出失败时返回的内容,但很容易猜到。大多数返回对象但无法完成的php函数在失败时返回null或false(当我说失败时我不是指错误或异常,只是无法做或找不到你提出的任何问题)。

答案 1 :(得分:1)

我猜imap_fetchstructure()正在返回false,这意味着该函数无法完成您想要的任务。要进行调试,请查看print_r($structure);输出内容。

答案 2 :(得分:1)

PHP文档说它将返回一个对象,但是如果你查看PHP源代码,你会看到它实际上在失败时返回FALSE,并且只有在一切都成功时才返回一个对象。

https://github.com/php/php-src/blob/master/ext/imap/php_imap.c#L2280