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中传递值时,它将在传递值时返回值。
但为什么差异会到来?
答案 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)
如果$a
为true
,则不返回1
,而 就是。
答案 3 :(得分:-1)
if($a)
的含义相同:“如果a为真,请执行此操作”
在PHP(以及大多数其他语言)中,值0表示false,任何其他值为“true”