if语句中的表达式应返回TRUE或FALSE,但它运行函数。PHP
一个新手问题。 这是一个函数和一个if语句if语句中的表达式应返回TRUE或FALSE,但它运行函数。PHP,php,Php,一个新手问题。 这是一个函数和一个if语句 <?php function test(){ echo "somedata"; } if(test()) ?> 此代码生成: 一些数据 根据文档,if表达式只应返回TRUE或FALSE,但除此之外,函数将运行。为什么会发生这种情况?PHP计算if表达式,以了解epression是否生成真实值。除了执行表达式中出现的函数之外,没有其他方法可以找到答案 在这个例子中,很明显
<?php
function test(){
echo "somedata";
}
if(test())
?>
此代码生成:
一些数据
根据文档,if表达式只应返回TRUE或FALSE,但除此之外,函数将运行。为什么会发生这种情况?PHP计算
if
表达式,以了解epression是否生成真实值。除了执行表达式中出现的函数之外,没有其他方法可以找到答案
在这个例子中,很明显:
if (sqrt(4) > 1)
PHP当然必须调用函数sqrt
,除非在这种情况下它是一个没有副作用的函数,而您的函数test
也执行echo
。其次,它返回一个值,而test
不返回。但是PHP只能通过执行函数来发现
请注意,表达式通常可以返回任何内容,但PHP有以下规则:
转换为布尔值时,以下值被视为FALSE
:
- 布尔值
本身FALSE
- 整数0(零)
- 浮动0.0(零)
- 空字符串和字符串“0”
- 零元素数组
- 具有零成员变量的对象(仅限PHP 4)
- 特殊类型
(包括未设置的变量)NULL
- 从空标记创建的SimpleXML对象
TRUE
(包括任何资源)
如果函数运行时未执行
return
语句,则返回的值为null
,因此根据上述规则,if
条件将是错误的。PHP计算if
表达式,以了解epress是否生成真实值。除了执行表达式中出现的函数之外,没有其他方法可以找到答案
在这个例子中,很明显:
if (sqrt(4) > 1)
PHP当然必须调用函数sqrt
,除非在这种情况下它是一个没有副作用的函数,而您的函数test
也执行echo
。其次,它返回一个值,而test
不返回。但是PHP只能通过执行函数来发现
请注意,表达式通常可以返回任何内容,但PHP有以下规则:
转换为布尔值时,以下值被视为FALSE
:
- 布尔值
本身FALSE
- 整数0(零)
- 浮动0.0(零)
- 空字符串和字符串“0”
- 零元素数组
- 具有零成员变量的对象(仅限PHP 4)
- 特殊类型
(包括未设置的变量)NULL
- 从空标记创建的SimpleXML对象
TRUE
(包括任何资源)
如果函数运行时未执行
return
语句,则返回值为null
,因此根据上述规则,if
条件将是错误的。值得注意的是,echo“somedata”
在这里完全无关。函数也可以有空体-只要它没有得到任何return
,它完全不在乎函数做什么。@MarcinOrlowski,当然除非函数执行exit()
(或等效的die()
)或抛出异常。在这种情况下,if()。当精确计时时,关闭机器或终止PHP进程也可能会影响此if()
,但这并不是我们要麻烦的。值得注意的是,echo“somedata”
在这里是完全无关的。函数也可以有空体-只要它没有得到任何return
,它完全不在乎函数做什么。@MarcinOrlowski,当然除非函数执行exit()
(或等效的die()
)或抛出异常。在这种情况下,if()。当精确计时时,关闭机器或终止PHP进程也可能会影响此if()
,但这不是我们要麻烦的。