【问题标题】:Warning: count(): must be an array or object that implements Countable警告:count():必须是实现 Countable 的数组或对象
【发布时间】:2018-09-10 15:43:51
【问题描述】:

我已迁移到使用 PHP v7(来自我的 PHP v5.4)的新服务器,现在我的网站上显示错误。

这是返回错误的代码行:

// The value of $ip at this point would look something like: "192.0.34.166"
$ip = ip2long($ip);
// The $ip would now look something like: 1073732954
if(!count($ip) > 0 || !preg_match('/^\d+$/', $ip) || empty($ip)) {
    $ip="0000000000";
}

我该如何解决这个问题?

【问题讨论】:

  • 看起来这可能是 7.2 的新行为,github.com/processwire/processwire-issues/issues/408 在使用前检查类型似乎是解决方案。
  • 那些在CodeIgniter中遇到问题的人是:if ( count($articles)){..},他们应该使用:if ( count((array)$articles)){..}作为here

标签: php php-7.2


【解决方案1】:

ip2long 从未返回数组。我认为您可以安全地从您的状况中删除 !count($ip) > 0 ||

【讨论】:

  • 你也可以只做if ($ip === false),因为ip2long在错误时返回false,或者在成功时返回一个长整数。不需要正则表达式。
猜你喜欢
  • 2018-12-19
  • 1970-01-01
  • 2019-08-15
  • 2020-01-18
  • 2020-01-27
  • 2019-06-20
  • 2020-04-08
  • 2019-10-18
  • 2018-10-19
相关资源
最近更新 更多