为了账号安全,请及时绑定邮箱和手机立即绑定

我该如何修复此 PHP 错误 - 参数必须是实现 Countable 的数组或对象?

我该如何修复此 PHP 错误 - 参数必须是实现 Countable 的数组或对象?

PHP
猛跑小猪 2023-10-22 21:28:37
我在这条线上遇到错误,不知道如何纠正它,有什么帮助吗?我的 php 能力为零甚至没有,只想修复我所做的一些工作中的错误。该修复程序还会向后兼容 PHP7 到 PHP5 吗?for($k=0;$k<count($_matchup['franchise'][$m]['player']);$k++){
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

在 PHP 7.2 中,如果您对不可数的变量调用 count(),PHP 会显示有关它的警告。一个常见的解决方法是在调用 count() 之前检查给定变量是否是“可数”。

“可数”变量可以是数组,也可以是实现 \Countable 接口的类的对象。因为可能有很多样板代码,所以 PHP 7.3 现在有一个新的 is_countable() 函数,如果传递的变量是……嗯……可数,则该函数返回 true。

https://php.watch/versions/7.3#new-is_countable-function

我会做这样的事情:

if(isset($_matchup['franchise'][$m]['player']) && is_countable($_matchup['franchise'][$m]['player']) {

    for($k=0;$k<count($_matchup['franchise'][$m]['player']);$k++){

        ...

    }

}

如果你的版本低于 7.3,请将这个 polyfill 放入你的代码中:


if (!function_exists('is_countable')) {

    function is_countable($var) { 

        return is_array($var) 

            || $var instanceof Countable 

            || $var instanceof ResourceBundle 

            || $var instanceof SimpleXmlElement; 

    }

}


查看完整回答
反对 回复 2023-10-22
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

请确保它$_matchup['franchise'][$m]['player']实际上是一个可以计数的变量。正如错误消息所示。

比如数组

这行代码应该兼容 PHP5 和 PHP7


查看完整回答
反对 回复 2023-10-22
  • 2 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信