一个新手问题。 这是一个函数和一个if语句。
<?php
function test(){
echo "somedata";
}
if(test())
?>
此代码生成: somedata
根据文档,if表达式只应返回TRUE或FALSE,但除此之外,函数运行。为什么会这样?
答案 0 :(得分:3)
PHP评估if
表达式,以便知道epression是否产生真值。除了执行表达式中出现的函数之外,没有其他方法可以找到。
在这个例子中非常清楚:
if (sqrt(4) > 1)
PHP当然必须调用函数sqrt
,除了在这种情况下它是一个没有副作用的函数,而你的函数test
也执行echo
。其次,它返回一个值,而test
则没有。但PHP只能通过执行函数找到。
请注意,表达式通常可以返回任何内容,但PHP具有it considers truthy or falsy:
的规则转换为布尔值时,以下值被视为
FALSE
:
- 布尔
FALSE
本身- 整数0(零)
- 浮点数0.0(零)
- 空字符串,字符串“0”
- 包含零元素的数组
- 一个零成员变量的对象(仅限PHP 4)
- 特殊类型
NULL
(包括未设置的变量)- 从空标签创建的SimpleXML对象
其他每个值都被视为
TRUE
(包括任何资源)。
如果函数在没有执行return
语句的情况下运行,则返回的值为null
,因此if
条件将根据上述规则进行伪造。