PHP5.*和PHP7.1.*之间的小差别

前几天在学习织梦建站,好容易搞明白了织梦的玩法,找出来了几套能用的模板,心里一松;然后来又提出了需求,要更改PHP环境,由5.6改为7.1,结果杯具了,出现了让我瞬间懵逼的问题:数据不能备份!
很奇怪啊,怎么会出现这种情况呢,然后网上搜各种答案,发现最多的说法是文件夹写入权限的问题,然后就各种折腾,结果被这个问题整整折磨了一天时间!
最后在大牛的指导下终于找到了问题的根源所在:
如下代码:


<?php $test=''; $test[2]=111; var_dump($test); ?>


在PHP5.*环境执行之后结果为:


array (size=1)
   2 => int 111


而在PHP7.1.*环境执行之后结果为:


string(3) " 1"


两个结果大相径庭,在PHP5.*中我们定义一个空变量$test,我们姑且认为此时的空变量$test是“弱类型”的,当我们使用的时候把他作为字符串类型赋值时他就为字符串类型,当我们把他作为数组类型赋值时他就为数组类型;
而在PHP7.1.*中我们定义一个空变量$test,这个时候这个空变量就变成了“强类型”,PHP7.1.*强制的把他认为是一个字符串类型,不管我们以何种方式给$test赋值,都会被默认为给赋值给一个字符串,所以得到的$test永远都是字符串类型,而后期我们把$test当做数组从中取值的时候,就不可能取得到了。
 
其实后来想想,花了这么多时间去解决这个问题非常的不值得,我们在开发过程中遇到陌生问题的时候,万万不能一口断定是某一个地方某一个原因的差错,这样容易走进一个死胡同再也绕不出来,而真实情况并不是我们笃定的那样,根本找错了方向,浪费了无谓的时间。

0 个评论

要回复文章请先登录注册