PHP7.2中count()函数报错count(): Parameter must be an array or an object that implements Countable
在php7.2版本中 count() 函数仅支持参数为数组,在非数组的情况下将报错如下:
count(): Parameter must be an array or an object that implements Countable in xxx/shop/alipay/alipay_core.function.php on line 23
解决方案
可在执行前判断一下
if(is_array($arr)){ count($arr); }
如果统计的是字符串,可替换为 strlen() 函数,例如
$arg = substr($arg,0,count($arg)-2);
修改为
$arg = substr($arg,0,strlen($arg)-1);
应用场景:支付宝参数处理。
/** * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 * @param $para 需要拼接的数组 * return 拼接完成以后的字符串 */ function createLinkstring($para) { $arg = ""; foreach ($para as $key => $val) { $arg.=$key."=".$val."&"; } //去掉最后一个&字符 //$arg = substr($arg,0,count($arg)-2); //php7.2下count函数的参数只能是数组,参考 https://yangjunwei.com/3301.html $arg = substr($arg,0,strlen($arg)-1); //如果存在转义字符,那么去掉转义 if(get_magic_quotes_gpc()){$arg = stripslashes($arg);} return $arg; }