王志勇 发表于 2019年06月20日 22:42
目前已经发现的不同:
1. PHP 7.0及之前的版本,对于不存在的变量,不会报错,如$_POST['abc']、$_GET['abc']。
解决的办法,目前PHP 7.1以及之后的版本,只能用$aa=@$_GET['abc'];的写法;
而PHP 7.0及之前的版本,$aa=$_GET['abc'];这样写不会有任何报错。
用屏蔽报错的方法,无法解决,因为整个程序是没有正常运行的。
在php.ini里极有可能有像PHP 7.0及之前的版本的设置语句,让其不这样严格报错。
PHP 7.1报错如此之严格,完全不像PHP的风格,连$aa=$_GET['name'];这样的语句也要报错。
2. 另一个PHP 7.1新增加的严格报错,例如在PHP 5.X这样写不会报错:
$a1=55;
echo $a1; //这里正常显示
$a1[1]=50;
echo $a1[1]; //这里开始报错
但这样写,PHP 7.1以及之后的版本,会报错。从报错上看,从PHP 7.1以及之后的版本开始,规定数组的变量名,必须不能与非数组的变量名相同。PHP 5.X则可以相同。
PHP 7.1只能这样写:
$a1=55;
echo $a1;
$a2[1]=50;
echo $a2[1];
这2种报错过于严格,完全不像PHP的风格。
2019-06-21 10:26更新:
PHP 7.1以及之后的版本,解决这种数组报错的办法:
$a1=55;
echo $a1;
$a1=array(); //清空数组
$a1[1]=50;
echo $a1[1];
2019-06-21 12:07更新:
还有一个基本语句的报错,PHP 7.0及之前,不需要声明变量就可以直接调用。比如这样:
if ($a1){}
当$a1不存在时不会报错。PHP 7.1如果没有事先声明变量,这样写,会报错。这种报错,通过用error_reporting(0);语句能够解决。但是由于程序开发的工作量太大,为了便于调试,我现在尽量不使用error_reporting(0);语句,因为每次调试时都必须手动删除这个语句。
置顶的文章:
论朋友圈可以发什么?
短信验证开发的方案分享
巡回更新:2018-09-21
速度是永恒的主题
UTF-8、HTTPS原来都是浮云
https安全吗?
独立博客有必要安装https吗?
近期的主题:
夜晚靓歌(10):你没看过的《星雨心愿》
Feedval、Blogval将下线/谈理财和生存
2024.9感言
人生讨论(20):有人借钱怎么办?(2)
人生讨论(19):迄今为止最强的情感频道
数码评测(67):让小米/红米手机的反应提高1~2倍
数码评测(66):无线网卡FW150UH VS FW150UH
数码评测(65):如何快速自制CPU天梯图?
数码评测(64):2024年,你还在用VGA线吗?
人生讨论(18):6年就可以实现财务自由
人生讨论(17):为什么总是受欺负?
人生讨论(16):要钱的最新妙招
创业杂谈(17):什么项目能赢利?
人生讨论(15):有人借钱怎么办?
数码评测(63):高清切换超级神器
数码评测(62):再谈视频的尺寸
数码评测(61):近期数码采购和折腾
人生讨论(14):看穿尊重
数码评测(60):图拉丁-最佳中配工作“免费”手机
创业杂谈(16):博客何时终结?
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +