php7的isset和empty的变化

php7.jpg

php5.6我判断变量是这样

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

php7测试这样怎么判断都是Flase,后来通过查资料发现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

Comments (12)

    Generic placeholder image
    演员 回复

    换主题了! 以前你不是这样的!

    Generic placeholder image
    心灵博客 回复

    这方法好,通用5、7

    Generic placeholder image
    Eltrac 回复

    有点久没来了,居然换主题了,这主题叫什么名字啊

      Generic placeholder image
      泽泽社长 回复

      没起名字呢,起名字太累了

        Generic placeholder image
        Eltrac 回复

        不难啊,翻开英语词典随便挑一个词出来就好了

    Generic placeholder image
    Henry 回复

    刚发现你博客换主题了,这个真简洁

    Generic placeholder image
    哥斯拉 回复

    刚发现你博客换主题了,这个真简洁

      Generic placeholder image
      泽泽社长 回复

      嗯,我挺喜欢这种风格的

    Generic placeholder image
    lee 回复

    博主,能否加个友链,或者付费到你这打个广告

      Generic placeholder image
      泽泽社长 回复

      我现在不加友链了,广告的话可以详谈

    Generic placeholder image
    Hran 回复

    神奇的拍黄片

      Generic placeholder image
      泽泽社长 回复

      踩坑日记,这东西我纠结了半天,百度后才知道原因