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

时间:2013-02-16 18:51:53

标签: php

    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中传递值时,它将在传递值时返回值。

但为什么差异会到来?

4 个答案:

答案 0 :(得分:4)

当您执行if ($a)之类的操作时,请考虑PHP是weak typed language。要了解if ($a)中评估的内容,请参阅conversion rules for booleans

从手册中引用:

  

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

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

所有其他人都被视为TRUE,包括-1(非凡!)。

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

答案 1 :(得分:1)

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

if($a==1) 1值为true

答案 2 :(得分:0)

如果$atrue,则返回1,而 就是。

答案 3 :(得分:-1)

if($a)的含义相同:“如果a为真,请执行此操作”

在PHP(以及大多数其他语言)中,值0表示false,任何其他值为“true”