爱好者 > Typecho > 代码相关 > php7的isset和empty的变化

php7的isset和empty的变化

作者:佚名 来源:爱好者 时间:2019-07-05

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