使用返回true或false的函数的PHP最佳实践是什么?

B S*_*ven 5 php boolean function typing

在玩PHP之后,我发现true返回1,false返回null.

echo (5 == 5) // displays 1
echo (5 == 4) // displays nothing
Run Code Online (Sandbox Code Playgroud)

在编写返回true或false的函数时,使用它们的最佳实践是什么?

例如,

function IsValidInput($input) {
  if ($input...) {
    return true;
  }
  else {
    return false;
  }
}
Run Code Online (Sandbox Code Playgroud)

这是使用该功能的最佳方式吗?

if (IsValidInput($input)) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

你会怎么写相反的功能?

IsBadInput($input) {
  return ! IsValidInput($input);
}
Run Code Online (Sandbox Code Playgroud)

你什么时候使用===运营商?

bfa*_*tto 5

使用 PHP 后,我发现 true 返回为 1, false 返回为 null。

这不是真的(没有双关语)。PHP 与许多其他语言一样,具有“true”和“falsy”值,这些值的行为类似于其他值TRUEFALSE与其他值进行比较。

之所以如此,是因为 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)
Run Code Online (Sandbox Code Playgroud)

当编写返回 true 或 false 的函数时,使用它们的最佳实践是什么?

尽可能精确,返回实际的布尔值TRUEFALSE。典型的情况是以 为前缀的函数is,例如isValidInput。人们通常期望此类函数返回TRUEFALSE

另一方面,在某些情况下让函数返回“假”或“真”值很有用。以strpos为例。如果它在位置 0 找到子字符串,则返回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"
Run Code Online (Sandbox Code Playgroud)