php - 修复警告 - key() 期望第 1 段是数组,给定字符串
问题描述
我正在使用wordpress 4.9.8
和PHP 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 是数组,字符串在
任何建议如何解决警告?
解决方案
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);
推荐阅读
- javascript - 将 Pug 列和行导出为 CSV
- intellij-idea - PyCharm DB Navigator:如何修复“没有这样的文件或目录”
- java - 在“org.springframework.webflow.engine.impl.RequestControlContextImpl”类型的对象上找不到属性或字段“httpServletRequest”
- javascript - 动态src ------ js >>> to html
- winapi - AnimateWindow() 在高 dpi 上错误地绘制背景 (Win10)
- elixir - 当 2 个库共享相同的依赖项并需要不同的版本时,混合 deps 错误
- asp.net-mvc - DropDownListFor 中的值未将值保存到数据库
- laravel - Laravel 4.0 到 5.7 迁移
- .htaccess - htaccess 规则在访问根域 URL 时在特定路径下显示我的网站
- flex-lexer - Flex 没有正确解析变量名