PHP7.2中count()函数报错count(): Parameter must be an array or an object that implements Countable

屏聚源码 屏聚学院评论351,847阅读模式

今天在调试支付宝应用场景时,突然出现错误提示:

Parameter must be an array or an object that implements Countable in xxx/shop/alipay/alipay_core.function.php on line 23

这是由于使用php7.2下出现的,原代码是:

/**
 * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
 * @param $para 需要拼接的数组
 * return 拼接完成以后的字符串
 */
function createLinkstring($para) {
	$arg  = "";
	while (list ($key, $val) = each ($para)) {
		$arg.=$key."=".$val."&";
	}
	//去掉最后一个&字符
	$arg = substr($arg,0,count($arg)-2);
	
	//如果存在转义字符,那么去掉转义
	if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
	
	return $arg;
}
/**
 * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码
 * @param $para 需要拼接的数组
 * return 拼接完成以后的字符串

所以解决方案是:

//去掉最后一个&字符
	//$arg = substr($arg,0,count($arg)-2);//php7.2下count函数的参数只能是数组,参考 https://code.pingju365.com/5428.html
	$arg = substr($arg,0,strlen($arg)-1);
	//如果存在转义字符,那么去掉转义
	if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}

把原先那句用// 注释掉,如上图还做了注解。在下面重新写一句:

$arg = substr($arg,0,strlen($arg)-1);

然后测试通过未报错。

 

继续阅读
屏聚源码
  • 本文由 发表于 2019年9月29日 11:45:40
辅助编程工具通义灵码 你的智能编码助手 屏聚学院

辅助编程工具通义灵码 你的智能编码助手

通义灵码是阿里推出的基于通义大模型,提供代码智能生成、研发智能问答能力的人工智能编码助手,经过海量优秀开源代码数据训练,可根据当前代码文件及跨文件的上下文,为你生成行级/函数级代码、单元测试、代码注释...
评论  0  访客  0
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定