玩过PHP后,发现true返回1,false返回null。
这不是真的(不是双关语)。与许多其他语言一样,PHP 具有“真”和“假”值,它们的行为可能与其他值相似TRUE
或FALSE
与其他值相比。
之所以如此,是因为 PHP 使用弱类型(相对于强类型)。它在比较它们时会自动转换不同类型的值,因此它最终可以比较相同类型的两个值。当你echo TRUE;
在 PHP 中时,echo
总会输出一个字符串。但是您向它传递了一个布尔值,必须将其转换为字符串echo
才能完成其工作。soTRUE
被自动转换为字符串"1"
,whileFALSE
被转换为""
.
什么时候使用 === 运算符?
这种弱或松散的类型是 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"