thinkphp - php等于判断反写的道理是什么?
黄舟
黄舟 2017-04-11 10:06:00
[PHP讨论组]

最近看thinkPHP源码的时候看到了一些判断方法都是反写的,例如:

if(''==$name) { // 获取全部变量
        $data       =   $input;
        $filters    =   isset($filter)?$filter:C('DEFAULT_FILTER');
        if($filters) {
            if(is_string($filters)){
                $filters    =   explode(',',$filters);
            }
            foreach($filters as $filter){
                $data   =   array_map_recursive($filter,$data); // 参数过滤
            }
        }
    }

小白求大神讲解下为什么是 ''==$name ,而不是 $name ==''?
这两种的区别是什么?
多谢!

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(8)
天蓬老师

防止你只写了一个等号还不知道。

大家讲道理

反写的话,如果写了一个=,直接报错,而正着写,就是赋值了,不会报错,主要为了防止出错

伊谢尔伦

这个应该都是个人习惯了, 没有任何影响的

PHPz

异常写法,正如一楼所说,防止漏写一个 “=” 号,如果写漏就会报错

阿神

一个很好的编码习惯,如果比较写成了$name='a',这个表达式就是给$name赋值a,'a'=$name则不会

黄舟

有时间可以看一下《c陷阱和缺陷》这本书。

阿神

大家都说这样子好,我这里具体解释一下这样子为什么好。
在静态语言,像C/C++之类的,推荐使用1==i这样的写法来判断,因为等号的左边是常量,这样子如果程序员误把==写成=,给常量赋值是非法的,这样在编译阶段错误就会暴露出来,提前被解决。而不是等到程序运行有bug才调试查找。

迷茫

这其实是从JAVA转PHP的人的习惯;
在JAVA中:

''==name
和
name==''

后者如果name变量没有赋值,则会爆空指针异常。而前者则不会。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号