【问题标题】:Warning: array_key_exists() expects parameter 2 to be array, boolean given. Wordpress警告:array_key_exists() 期望参数 2 是数组,给定的布尔值。 WordPress
【发布时间】:2016-01-28 00:42:03
【问题描述】:

我是 php 新手,如果给定的键存在,我的一段代码有问题。错误代码如下,我不知道是什么原因造成的。请帮忙。

“警告:array_key_exists() 期望参数 2 是数组,布尔值在”

线

if ( is_array(array_key_exists('sizes',wp_get_attachment_metadata($attach_id)) == false ){}

【问题讨论】:

  • wp_get_attachment_metadata($attach_id) 正在返回 boolean 而不是数组。通常意味着未找到这些附件的元数据。
  • 不回答您的问题,但:is_array(array_key_exists(... 没有多大意义。 array_key_exists 返回一个布尔值,而 is_array 需要一个数组 ...

标签: php wordpress


【解决方案1】:

正如 ArSeN 已经指出的那样,is_array(array_key_exists( 没有多大意义。我猜您正在尝试:a) 不是数组或 b) 缺少特定键。
使用临时变量,您可以执行类似的操作

if ( !is_array($meta=wp_get_attachment_metadata($attach_id)) || !array_key_exists('sizes', $meta) ) {
    // ....
}

或者,如果您尝试更频繁地访问元数据(或者只是作为一种编码风格):

$meta=wp_get_attachment_metadata($attach_id);
if ( !is_array($meta) || !array_key_exists('sizes', $meta) ) {
    // ....
}

【讨论】:

  • 只需让代码更干净,调试起来就容易多了。+1
  • 顺便说一句:当 $meta 为 false 时,如果 php doesn't complain(不是警告,不是通知),if 条件 可以 简化为 if ( !isset($meta['sizes']) ) ... 。不是我的风格,但可能......
【解决方案2】:

你可以在那个东西里放一个三元组来丑化它。

if ( is_array(array_key_exists('sizes',wp_get_attachment_metadata($attach_id)) == false) ?: array() ){}

这样,如果附件元数据不存在,它将提供一个空数组,这反过来又会从 array_key_exists 产生一个 false,这与所需代码的行为相似。

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 2016-09-27
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多