PHP 7.4 - 警告:count():参数必须是数组

Posted

技术标签:

【中文标题】PHP 7.4 - 警告:count():参数必须是数组【英文标题】:PHP 7.4 - Warning: count(): Parameter must be an array 【发布时间】:2020-08-27 22:17:06 【问题描述】:

我刚刚将我的 PHP 版本从 5.6 升级到了 7.4。我在我的页面中使用了 count() 函数,例如:

$watch_server_count  = count($watch_server);
if ($watch_server_count > 0) 
    foreach ($watch_server->table as $key=> $watch_server_rows) 

    

警告:count():参数必须是数组或实现了Countable的对象...

【问题讨论】:

检查 $watch_server 包含的内容。 $watch_server 是一个对象,而不是一个数组,因此是 $watch_server->...。你是说$watch_server_count = count($watch_server->table); 吗?这是有道理的,因为您正在迭代此属性 object(ShinoDB)#6137 (3) ["error"]=> NULL ["filename"]=> string(187) "OK^ok.ru/videoembed/963440478908 Vidbom^vidbm.com/embed-qx0qzffbptht.html Vevio^ vev.io/embed/k4rdekk1q2o1 Vidshare^vidshare.tv/embed-l8w79d88qq1v.html" ["table"]=> array(4) [0]=> array(2) [0]=> string(2) "OK" [1]=> string( 37) "ok.ru/videoembed/963440478908" 这能回答你的问题吗? count(): Parameter must be an array or an object that implements Countable error in php 这能回答你的问题吗? PHP count replacement 【参考方案1】:

从 PHP 7.1 开始,您可以在执行foreach 之前使用is_iterable

(PHP 7 >= 7.1.0) is_iterable — 验证变量的内容是否为可迭代值

https://www.php.net/manual/en/function.is-iterable.php

所以代码将如下所示:

if ( is_iterable($watch_server->table) ) 
    foreach ($watch_server->table as $key=> $watch_server_rows) 
        //
    

【讨论】:

【参考方案2】:

你可以试试这个方法。 is_countable

https://www.php.net/manual/en/function.is-countable.php

if ( is_countable($watch_server->table) ) 
    foreach ($watch_server->table as $key=> $watch_server_rows) 
        ...
    

【讨论】:

嗨,Mehmet,欢迎来到 ***。如果您发布答案,请检查是否已经有其他答案涵盖相同的代码。在这种情况下,Redy S 提供了另一个答案。此外,您的答案可能是错误的,因为并非所有实现 Countable 接口的对象都提供了必要的迭代方法

以上是关于PHP 7.4 - 警告:count():参数必须是数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP 警告:count():参数必须是在 C:\\htdocs\my.php 中实现 Countable 的数组或对象 [关闭]

PHP错误:警告:count():参数必须是实现Countable的数组或对象

PHP警告消息:count():参数必须是实现Countable的数组或对象[重复]

./libraries/plugin_interface.lib.php#551 count() 中的警告:参数必须是数组或实现 Countable 的对象

MYBB 警告 [2] count():参数必须是数组或实现 Countable 的对象 - 行:906

警告:sizeof():参数必须是数组或实现可数php7.2的对象