首页 > 解决方案 > 修复警告 - key() 期望第 1 段是数组,给定字符串

问题描述

我正在使用wordpress 4.9.8PHP 7.1.8

我正在使用以下内容post-meta从帖子中获取。

        $a = get_post_meta($post_id, '_cegg_data', true);
        $keys = key($a); //  here I get the warning

对于某些帖子$a变成空字符串。但是,我只有在查询后才知道这一点,get_post_meta因此会引发警告。

警告:key() 期望参数 1 是数组,字符串在

任何建议如何解决警告?

标签: phpwordpress

解决方案


get_post_meta函数返回单个值,如果第三个参数设置为 true(其默认值为 false)

get_post_meta( int $post_id, string $key = '', bool $single = false )

$single (bool) (可选) 是否返回单个值。默认值:假

Return (mixed) 如果 $single 为 false,将是一个数组。如果 $single 为真,将是元数据字段的值。

现在,您正在使用 $a = get_post_meta($post_id, '_cegg_data', true);. 显然,第三个参数为真,因此它返回一个字符串,而不是数组

现在,该key()函数用于从当前内部指针位置返回元素键。它需要一个数组作为参数。

mixed key ( array $array )

由于您将字符串传递给key()函数,这就是您收到警告的原因。

现在,您可以将get_post_meta(...)调用中的第三个参数设置为 false(或不指定第三个参数,以便它认为默认值 false),以获取一个数组,如下所示:

$a = get_post_meta($post_id, '_cegg_data', false);

推荐阅读