在使用PHP时,返回值为1表示真(true),返回值为null表示假(false)是不准确的。与许多其他编程语言一样,PHP也有“真值”和“假值”,它们可以在与其他值比较时表现得像
TRUE
或
FALSE
。
这是因为PHP使用弱类型(相对于
强类型)。当比较不同类型的值时,它会自动转换这些值,以便最终可以比较两个相同类型的值。当您在PHP中使用
echo TRUE;
时,
echo
将始终输出一个字符串。但是您传递了一个布尔值,必须在
echo
执行其工作之前将其转换为字符串。因此,
TRUE
自动转换为字符串
"1"
,而
FALSE
转换为
""
。
那么什么时候需要使用===运算符呢?
这种弱类型或宽松类型是 PHP 使用两个等号运算符 == 和 === 的原因。当您想要确保比较的两个值不仅“相等”(或等价),而且类型也相同时,使用 ===。实际应用中:
echo 1 == TRUE; // echoes "1", because the number 1 is a truthy value
echo 1 === TRUE; // echoes "", because 1 and TRUE are not the same type (integer and boolean)
当编写返回 true 或 false 的函数时,如何使用它们的最佳实践是什么?
在可能的情况下要精确,返回实际的布尔值 TRUE 或 FALSE。典型的情况是以 is 为前缀的函数,例如 isValidInput。人们通常期望这些函数返回 TRUE 或 FALSE。
另一方面,在某些情况下,使您的函数返回“假值”或“真值”很有用。例如,以 strpos 为例。如果它在零位置找到子字符串,则返回 0(int),但如果未找到字符串,则返回 FALSE(bool)。
$text = "The book is on the table";
echo (strpos($text, "The") == FALSE) ? "Not found" : "Found"; // echoes "Not found"
echo (strpos($text, "The") === FALSE) ? "Not found" : "Found"; // echoes "Found"