当前位置: 首页 > 知识库问答 >
问题:

致命错误[0]:array_key_exists()要求参数2为数组,但给定为null

吕承望
2023-03-14

我不知道为什么我会得到这个。我用这个代码显示专辑封面。大多数专辑/子专辑都运行良好。但其中有2个会抛出错误:致命错误[0]:array_key_exists()期望参数2为数组,给定为null

任何指点都将受到高度赞赏。谢谢.

   .
// Get album cover
    if ($this->type == 'albums' and $this->output) {
        $coverTpl = '(SELECT *
        FROM %tImages%
        LEFT JOIN %tStorages% ON %tImages%.image_storage_id = %tStorages%.storage_id
        WHERE image_id = (SELECT album_cover_id FROM %tAlbums% WHERE album_id = %ALBUM_ID%)
        AND %tImages%.image_is_approved = 1
        LIMIT 1)';
        $album_cover_qry_tpl = strtr($coverTpl, [
            '%tImages%' => $tables['images'],
            '%tStorages%' => $tables['storages'],
            '%tAlbums%' => $tables['albums'],
        ]);
        $albums_cover_qry_arr = [];
        $albums_mapping = [];
        foreach ($this->output as $k => &$album) {
            if ($album['album_image_count'] < 0) {
                $album['album_image_count'] = 0;
            }
            $album['album_image_count_label'] = _n('image', 'images', $album['album_image_count']);
            $albums_cover_qry_arr[] = str_replace('%ALBUM_ID%', $album['album_id'], $album_cover_qry_tpl);
            $albums_mapping[$album['album_id']] = $k;
        }
        $albums_slice_qry = implode("\n" . 'UNION ALL ' . "\n", $albums_cover_qry_arr);
        $db->query($albums_slice_qry);
        $albums_slice = $db->fetchAll();
        if ($albums_slice) {
            foreach ($albums_slice as $slice) {
                $album_key = $albums_mapping[$slice['image_album_id']];
                if (!array_key_exists('album_images_slice', $this->output[$album_key])) {
                    $this->output[$album_key]['album_images_slice'] = [];
                }
                $this->output[$album_key]['album_images_slice'][] = $slice;
            }
        }
    }
}
.
.

共有1个答案

宰父正真
2023-03-14

我们不知道为什么你的变量不是数组。Acyually error message很好地描述了它,由于某些原因,$this->output[$album_key]中的某些部分只是null。您需要自己调试并修复它,如果需要,因为我们没有访问您的数据。

然而,消除此类错误的最安全方法通常是在尝试获取或修改变量的数据之前检查变量是否为数组:

if (is_array($this->output[$album_key]) && !array_key_exists('album_images_slice', $this->output[$album_key])) {
    $this->output[$album_key]['album_images_slice'] = [];
}

或者更好的是,如果不存在,则添加一个空数组:

if(!is_array($this->output[$album_key])){
    $this->output[$album_key] = [];
}

if (!array_key_exists('album_images_slice', $this->output[$album_key])) {
    $this->output[$album_key]['album_images_slice'] = [];
}
 类似资料:
  • 当试图向会话添加数据(并检查它是否已经存在)时,我会收到以下警告。 警告:in_array()要求参数2为数组,给定null 我怎样才能解决这个问题? 它所指的代码: 我只有在清洁的浏览器上添加第一个产品时才会收到此警告。当我删除它并添加另一个产品时,警告就消失了。同样,如果我添加第二个产品。

  • 我循环两个数组之间的字符串重叠,删除那些有一个值的值,以便只保留$check的空值,在这种情况下是$check[5]。 第二个$check是多维的。 第一个循环通过$names运行,第二个循环通过$check运行。 如果$names()中的当前字符串出现在的当前数组中,则该数组将被删除。 但是,控制台会打印一条警告:希望参数2是数组,如果给定空值。我觉得这很奇怪,因为应该等于$check中的一个数

  • 我得到以下错误 警告:mysqli_error()只需要1个参数,给定0 问题出在代码的这一行: 整个代码是 包含的文件有以下一行

  • 在这种情况下,我的查询工作正常,我已经在mysql上对它们进行了测试。 首先,我有一个自定义查询函数,在MySQLDatabase类中如下所示 然后我有一个类叫用户使用MYSQL类 最后,我以这种方式调用index.php中的方法 以下是一些事实:1。-当我插入数据库中存在的id值时,会出现此警告 警告:mysqli_fetch_array()要求参数1为给定数组的mysqli_结果 2.-当我插

  • 我在数据库查询调用期间遇到问题,并收到下面提到的错误。在本地运行代码时遇到此问题。基本代码是在 Java 1.7 和 Ant 构建中设置的。 错误: java.sql.SQL异常: 错误的参数数: 预期为 0,被赋予 5 查询: {呼叫dbo。SaveTest(?,?,?,?,?)}参数:[值1,值2,值3,值4,值5] 法典: 任何帮助都是值得赞赏的。

  • 问题内容: 我正在使用UserType 3.0.0.RC1将JodaMoney映射到Hibernate。 当SessionFactory初始化时,我陷入了一个错误: PersistentMoneyAmount要求将currencyCode定义为参数,或者将defaultCurrencyCode Hibernate属性定义为 我确定我必须遇到一些配置问题-这是相关的代码段。 Persistence.