php7.jpg

php5.6我判断变量是这样

if(empty($this->fields->d)){}
if(isset($this->fields->d)){}

php7测试这样怎么判断都是false,后来通过查资料发现php7在这个判断上做了些变化。
php7判断的时候会依次判断,php5.6则是预加载后判断!

也就是说php5.6判断是先执行$this->fields->d然后在对结果进行判断。
php7则是把$this->fields->d当做一个变量进行判断,而没有执行它。

知道原理后就可以很好的写出兼容的判断代码了。

$this->fields->d赋值于一个变量,然后对这个变量进行判断就可以了!。

$d=$this->fields->d;
if(empty($d)){}
if(isset($d)){}

参考
https://learnku.com/laravel/t/3021/isset-is-not-right-after-upgrading-php7