王志勇 发表于 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吗?
近期的主题:
创业杂谈(6):捡钱/赚钱的一个重要原理
夹缝中生存
2023新年开篇:人生最重要的事情,念经持咒
2022年结语
创业杂谈(5):赚钱方法秘密的发现
创业杂谈(4):博客怎样写有(大的)流量?
中文博客最恰当的叫法
本博客需要重温置顶
指出最不规范的网名
编程杂谈(6):永恒的论坛和2023问题
创业杂谈(3):为什么网络赚钱会这样难?
谈永恒的论坛
最难熬的2022年冬天
创业杂谈(2):寻求成功
通勤50分钟买电驴吗?
编程杂谈(5):为什么说编程就是创业?
编程杂谈(4):擅长和成功
编程杂谈(3):为什么写程序必须辞职?
编程杂谈(2):最重要的因素和资金问题
编程杂谈(1):选择项目
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +