去评论
dz插件网

分享一个帝国兼容php8的兼容写法

婷姐
2024/11/03 14:12:17
分享一个帝国兼容php8的兼容写法,比如帝国源代码,connect.php核心文件的某函数
  1. //返回ID列表function eReturnInids($ids){        if(empty($ids))        {                return 0;        }        $dh='';        $retids='';        $r=explode(',',$ids);        $count=count($r);        for($i=0;$i<$count;$i++)        {                $id=(int)$r[$i];                if(!$id)                {                        continue;                }                $retids.=$dh.$id;                $dh=',';        }        if(empty($retids))        {                return 0;        }        return $retids;}
如果在php8+以上,不是数组而产生的错误或警告,甚至某些地方会终止执行。那怎么改呢。其实很简单的,那我们自定义一个函数写到connect.php文件最尾部。自定义函数如下:
  1. function php8_count($a){return is_array($a)?count($a):0;}
那帝国的源代码就可以改为
  1. //返回ID列表function eReturnInids($ids){        if(empty($ids))        {                return 0;        }        $dh='';        $retids='';        $r=explode(',',$ids);        $count=php8_count($r);        for($i=0;$i<$count;$i++)        {                $id=(int)$r[$i];                if(!$id)                {                        continue;                }                $retids.=$dh.$id;                $dh=',';        }        if(empty($retids))        {                return 0;        }        return $retids;}
是不是很简单呢,帝国这样的函数没有判断是不是数组的太多了,只是举例某一个函数作为说明。