我目前正在建立一个网站,我遇到了一个可以做的例子:
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)
(两者相同(
等等。。。