php7的isset和empty的变化

代码相关 php 判断 2019-07-5 阅读:1943

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

16条评论

    Q

    这个方法不适用于 isset吧

    游客 Windows10 72 天前回复

      泽泽社长
      @Q

      自己试试呗

      作者 Windows7 72 天前回复

    zhou

    <?php if(isset($this->fields->futitle)){
    echo '字段存在,值为:'.$this->fields->futitle;
    }else{
    echo '字段不存在';
    }
    ?>
    小白求助这个这个情况怎么写才能兼容php7

    游客 Windows10 73 天前回复

      泽泽社长
      @zhou

      文章已经写得很清楚了,不看文章直接问不太好吧

      作者 Windows7 72 天前回复

    演员

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

    游客 Windows10 231 天前回复

    心灵博客

    这方法好,通用5、7

    游客 MacOS 231 天前回复

    Eltrac

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

    游客 Windows7 232 天前回复

      泽泽社长
      @Eltrac

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

      作者 MacOS 232 天前回复

        Eltrac
        @泽泽社长

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

        游客 Windows7 232 天前回复

    Henry

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

    游客 Windows10 232 天前回复

    哥斯拉

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

    游客 Windows7 232 天前回复

      泽泽社长
      @哥斯拉

      嗯,我挺喜欢这种风格的

      作者 MacOS 232 天前回复

    lee

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

    游客 Windows10 233 天前回复

      泽泽社长
      @lee

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

      作者 Windows7 233 天前回复

    Hran

    神奇的拍黄片

    游客 Windows10 234 天前回复

      泽泽社长
      @Hran

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

      作者 Windows7 234 天前回复