所有的PHP类型都返回一个布尔值吗?

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

if (myString)

if (myArray)

并且当变量内部有数据时它似乎“返回”真。 至少,这是我的想法。

例如

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

当我断言$testVar = "" ,那么它回声“空”。

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

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

if (isset($testVar) && $testVar)可以使用(根据实践)

我已经搜索了问题,但找不到这个确切问题的答案。 总结:
假如它不是空的,任何类型都可以返回一个布尔值吗?

谢谢。


这些类型不会返回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”是一个虚假值。 请参阅布尔值,“转换为布尔值”一节。

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


变量不会“返回”布尔值,但任何变量都可以评估为true或false。

最好的做法是严格对比,而不是只要if($var)

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

链接地址: http://www.djcxy.com/p/58871.html

上一篇: Do all php types return a bool?

下一篇: PHP MySQL query returning NULL