search

Home  >  Q&A  >  body text

PHP的if判断,为什么要写两个条件

PHP的if判断,为什么要写两个条件,只写一个$str==='string'不是也一样吗?
是出于速度的考虑吗?
代码如下,

    if(isset($str) && $str==='string'){
        ...
    }
巴扎黑巴扎黑2902 days ago621

reply all(4)I'll reply

  • 天蓬老师

    天蓬老师2017-04-10 14:53:59

    如果PHP处理一个未声明的变量就会触发一个Notice错误,问题不大并不会终止程序的运行
    但,这是写一个严谨程序的坏习惯
    特别是在使用FrameWork的时候,Notice错误会被catch,并终止程序的运行。

    所以,

    // 判断一个变量是否存在
    isset($attr)    // $attr等于null或许未声明,将返回false 
    
    // 判断一个变量是否有值,请使用
    empty($attr)    // $attr等于'0'或''或0或null,将返回true
    
    // 坏习惯 让弱类型的PHP去处理,看似很省心的却可能带来意想不到的结果
    if($attr) 
    

    reply
    0
  • PHPz

    PHPz2017-04-10 14:53:59

    人们在追寻问题的答案的时候,却总是忘记追寻问题本身的意义。

    • 如果前面的代码已经明确 $str 变量的存在,何必加一句 isset($str)
    • 如果前面的代码不能表明 $str 变量的存在,为什么不加 isset($str)

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 14:53:59

    $str 如果没 set 就会报 undifined的错误, 你用===和==又有什么区别。

    reply
    0
  • 阿神

    阿神2017-04-10 14:53:59

    我的理解是程序会先判断

    isset($str);
    

    如果结果是$str没有设置,那么就不用再继续去判断

    $str==='string';
    

    从而节省了执行的时间

    reply
    0
  • Cancelreply