繁体   English   中英

if($ a)和if($ a == 1)有什么区别?

[英]What is difference between if($a) and if($a==1)?

    function foo($a)
    { 
      if($a) {return "a";}
      else if($a==2) {return "b";}
      else {return "c";}
     }

     -----------------------------------------

     function foo2($a)
     {
       if($a==1){return "a";}
       if($a==2){return "b";}
       if($a==3){return "c";}

     }

当我传递值时,任何数字为1,2或3? 它将返回1.当我在foo2函数中传递值时,它将作为value通过返回值。

但是为什么会有差异呢?

当您执行诸如if ($a) ,请考虑PHP是一种弱类型语言 要了解if ($a) ,请参见boolean转换规则

从手册中引用:

转换为布尔值时,以下值为FALSE

  • 布尔值FALSE本身
  • 整数0 (零)
  • 浮点数0.0 (零)
  • 空字符串,字符串"0"
  • 零元素数组
  • 成员变量为零的对象(仅PHP 4)
  • 特殊类型NULL (包括未设置的变量)
  • 从空标签创建的SimpleXML对象

所有其他值都被认为是TRUE ,包括-1 (非常好!)。

另一方面,当您执行if ($somevar == 1) ,则$somevar == 1已经是一个boolean ,并且转换规则不适用。

if($a) 任何非零值都为true

if($a==1) 只有 1个值是true

如果$atrue ,则不会返回1就是差异。

if($a)含义与以下内容相同:“如果a为true,则执行此操作”

在PHP(和大多数其他语言)中,值0表示false,其他任何值均为'true'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM