在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函数的参数只能是数组,参考 http://yangjunwei.com/3301.html
$arg = substr($arg,0,strlen($arg)-1);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
}