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 的对象