【问题标题】:PHP count replacement [duplicate]PHP计数替换[重复]
【发布时间】: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


【解决方案1】:

截至PHP 7.2.0

count() 现在将对无效可数产生警告 传递给 array_or_countable 参数的类型。

http://php.net/manual/en/function.count.php

在计数之前检查数组is_array()

【讨论】:

  • 感谢您的帮助。我觉得有人只是在投反对票。
【解决方案2】:

检查它是否为数组或不为空。

使用is_array($var);

使用(!empty($var))

【讨论】:

  • 不知道为什么这会被否决。
猜你喜欢
  • 2018-09-09
  • 2014-09-28
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 2013-11-29
  • 2017-12-26
  • 2012-04-14
  • 1970-01-01
相关资源
最近更新 更多