此文章发布于33个月前,部分信息可能已经过时,请自行斟酌确认
今天在使用支付宝sdk对接网页支付时,系统报了这个错误。
错误原因:
PHP7.2版本将each()
方法移除了,项目中使用到each()
地方就会报错!
支付宝支付SDK2.0中使用了each()
方法。
错误截图:
解决办法1:
- 将
each()
替换为foreach()
,如下为示例:
each
原写法为while (list ($key, $val) = each($para_temp)) { }
更改为:foreach ($para_temp as $key => $val) { }
示例代码:
//while (list ($key, $val) = each($para_temp)) { //旧写法已被废弃
foreach ($para_temp as $key => $val) { //替换方式
if (false === $this->checkEmpty($val)) {
//$val = $this->characet($val, $this->postCharset);
$val = str_replace("'", "'", $val);
//$val = str_replace("\"",""",$val);
$sHtml .= "<input type='hidden' name='" . $key . "' value='" . $val . "'/>";
}
}
解决办法2:
- 首先说明推荐第一种解决办法
办法2是自己修改each()
方法代替:
function func_new_each(&$array){
$res = array();
$key = key($array);
if($key !== null){
next($array);
$res[1] = $res['value'] = $array[$key];
$res[0] = $res['key'] = $key;
}else{
$res = false;
}
return $res;
}
将上述方法放在公共文件中,然后将程序中将each
修改为func_new_each
即可。
ps:支付宝sdk中的需要替换的地方为alipay\AopClient.php
中的375行,和412行。
最后修改:2020 年 12 月 26 日 06 : 35 PM
© 允许规范转载