0
    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";}

     }

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

但是为什么会出现差异呢?

4

4 回答 4

4

当您执行类似的操作时if ($a),请考虑 PHP 是一种弱类型语言。要了解计算的内容if ($a),请参阅布尔值的转换规则

引用手册:

转换为布尔值时,会考虑以下值FALSE

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

所有其他都被考虑TRUE在内,包括-1(了不起的!)。

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

于 2013-02-16T18:55:04.720 回答
1

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

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

于 2013-02-16T18:57:47.073 回答
0

如果$atrue,它不会返回1就是区别。

于 2013-02-16T18:55:36.427 回答
-1

if($a)意思与:“如果 a 为真,则执行此操作”相同

在 PHP(和大多数其他语言)中,值 0 表示假,任何其他值都是“真”

于 2013-02-16T18:55:08.370 回答