所有php类型都返回bool吗


Do all php types return a bool?

我目前正在建立一个网站,我遇到了一个可以做的例子:

if (myString)

if (myArray)

只要变量中有数据,它似乎就会"返回"true。至少,我是这么想的。

例如

$testVar = "test";
if ($testVar)
    echo $testVar;
else
    echo "Empty";

当我断言$testVar = ""时,它的回声是"Empty"。

我想知道这是否是PHP的一个定义功能,如果它不是null或空的,任何类型都会返回true,就像在其他语言中你需要做if($testVar = "")等等

此外,如果变量不为空,并且我还想检查变量是否存在,那么在所有类型上都会返回true,那么:

if (isset($testVar) && $testVar)可以使用

我一直在寻找问题,但找不到这个确切问题的答案。总结:
只要不为空,任何类型都可以返回bool吗?

谢谢。

这些类型不返回true,而是强制转换为true。PHP是一种弱类型语言,因此它会在需要时自动尝试将变量转换为正确的类型。在大多数情况下,这意味着非空变量将返回true。

此资源将为您提供更多信息。具体来看一下"转换为布尔值"部分。

http://www.php.net/manual/en/language.types.boolean.php

您不能通过这种方式检查字符串是否为空。考虑一下:

$test = "0";
if ($test)
    echo $test;
else
    echo "Empty";

上面的代码打印"Empty",因为"0"是一个错误值。请参阅布尔值,"转换为布尔值"一节。

所以答案是:所有类型都可以转换为布尔值,但结果可能不是您想要的。

变量不会"返回"bool,但任何变量都可以计算为true或false。

最佳实践是严格进行比较,而不仅仅是进行if($var)

有关详细的比较信息,请参阅:http://us3.php.net/manual/en/types.comparisons.php

条件总是返回bool如果你需要检查任何空值,你需要使用equalsto运算符检查值

if($testVar == "") // check is $testVar is empty or not return bool-true/false

最好使用empty() 等功能

if(empty($testVar))

在本例中,when you are testing string variables:

$testVar = "test";
if ($testVar)
    echo $testVar;
else
    echo "Empty";

您断言的是if variable $testVar is set(无论它是否为空,都不是(。变量本身没有返回类型,但它是在控制流运算符(如if语句(中使用的上下文中。

if ($testVar)if (isset($testVar))相同(当$testVar是字符串时(

然而,还有其他类似的情况:

$testVar = "0";
if ($testVar)
    echo $testVar;
else
    echo "Empty";

在这种情况下,您将得到"Empty",因为$testVar被评估为int 0

然而;如果你有这个:

$testVar = " 0"; // notice the space in front of 0
if ($testVar)
    echo $testVar;
else
    echo "Empty";

这将回显$testVar,因为变量已设置并且具有string值。


当你想检查空字符串时,你有几个选项:

  • if (empty($testVar))
  • if (strlen($testVar))if (strlen($testVar) > 0)(两者相同(

等等。。。