【发布时间】:2018-09-26 02:05:55
【问题描述】:
我有一些代码在运行低于 PHP 7 的服务器上运行良好,但在 PHP 7 上我收到一个警告,我需要摆脱它。我需要修复代码以消除警告,我不能只是隐藏警告。
我的问题是 count() 函数。这是我收到的警告以及它所指的一小段代码。该数组可能包含许多元素,一些元素具有值,而另一些元素具有空白值。数组也可能为空。我假设当数组为空时,即触发警告。所以我正在寻找一种方法来判断数组是否有 1 个或多个元素,有和没有空白值。只要有一个键,if 语句就应该为真。
PHP Warning: count(): Parameter must be an array or an object that implements Countable
$tb_operator_meta_json = get_post_meta($tableid, 'tb_operator_meta', true);
$tb_operator_meta = json_decode($tb_operator_meta_json, true);
$tb_operator_meta = wp_unslash($tb_operator_meta);
if (count($tb_operator_meta) > 0 && $tb_operator_meta != null) {
我不知道为什么这被标记为重复。如果您阅读了我的帖子,那显然与其他帖子不同。
【问题讨论】:
-
使用
var_dump查看您实际处理的内容。它不是(普通)数组,否则即使它为空或包含空值,您也不会收到此错误。 -
错误是因为
get_post_meta($tableid, 'tb_operator_meta', true)返回的是一个值而不是一个数组,因为您可以在 [the documentation][1] 中查看,您可以将第三个参数设置为 false 以获取一个数组。您可以将比较更改为 if ($tb_operator_meta > 0 && $tb_operator_meta != null) 或更改函数的调用get_post_meta($tableid, 'tb_operator_meta', false) -
GolezTrol,这绝不是该帖子的副本,但无论如何。 Chopi,我知道 get_post_meta 正在返回一个字符串。准确地说,它返回一个 JSON 字符串。
标签: php