所有php类型都返回bool吗?

所有php类型都返回bool吗?,php,types,isset,return-type,Php,Types,Isset,Return Type,我目前正在建立一个网站,我遇到了一个案例,我可以做到: if(myString) if(myArray) 每当变量中有数据时,它似乎“返回”true。至少,我是这么想的 例如 当我断言$testVar=”“时,它会回显“Empty” 我想知道这是否是PHP的一个定义特性,任何类型如果不为null或空都将返回true,就像在其他语言中需要执行的if($testVar=”“)等操作一样 此外,如果该变量不是空的,并且我还想检查该变量是否存在,则在所有类型上确实返回true,我会: if(isset(

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

if(myString)

if(myArray)

每当变量中有数据时,它似乎“返回”true。至少,我是这么想的

例如

当我断言
$testVar=”“
时,它会回显“Empty”

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

此外,如果该变量不是空的,并且我还想检查该变量是否存在,则在所有类型上确实返回true,我会:

if(isset($testVar)和&$testVar)
可以使用(就实践而言)

我已经搜索了一些问题,但找不到这个确切问题的答案。总而言之:
如果bool不是空的,任何类型都可以返回bool吗


谢谢。

条件始终返回布尔值 如果需要检查任何空值,则需要使用equalsto运算符检查值

if($testVar == "") // check is $testVar is empty or not return bool-true/false
最好使用函数,如
empty()


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

if($testVar == "") // check is $testVar is empty or not return bool-true/false
最好使用函数,如
empty()

这些变量不会“返回”布尔值,但任何变量的计算结果都可以为true或false

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

有关详细的比较信息,请参见:

变量不会“返回”布尔值,但任何变量的计算结果都可以为true或false

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


有关详细的比较信息,请参见:

在本例中测试字符串变量时

$testVar = "test";
if ($testVar)
    echo $testVar;
else
    echo "Empty";
如果设置了变量$testVar,则断言的是
(如果变量为空或不为空,则断言的是
)。变量本身没有返回类型,但它是在控制流操作符(如
if
语句)中使用的上下文中

i、 e.
if($testVar)
if(isset($testVar))
(当$testVar是字符串时)

但是,还有其他类似的情况:

$testVar = "0";
if ($testVar)
    echo $testVar;
else
    echo "Empty";
在这种情况下,您将得到“空”,因为
$testVar
被计算为
int0

但是,;如果你有这个:

$testVar = " 0"; // notice the space in front of 0
if ($testVar)
    echo $testVar;
else
    echo "Empty";
这将回显
$testVar
,因为变量已设置且具有
字符串


当您要检查空字符串时,有几个选项:

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

等等。

在本例中,当您测试字符串变量时

$testVar = "test";
if ($testVar)
    echo $testVar;
else
    echo "Empty";
如果设置了变量$testVar,则断言的是
(如果变量为空或不为空,则断言的是
)。变量本身没有返回类型,但它是在控制流操作符(如
if
语句)中使用的上下文中

i、 e.
if($testVar)
if(isset($testVar))
(当$testVar是字符串时)

但是,还有其他类似的情况:

$testVar = "0";
if ($testVar)
    echo $testVar;
else
    echo "Empty";
在这种情况下,您将得到“空”,因为
$testVar
被计算为
int0

但是,;如果你有这个:

$testVar = " 0"; // notice the space in front of 0
if ($testVar)
    echo $testVar;
else
    echo "Empty";
这将回显
$testVar
,因为变量已设置且具有
字符串


当您要检查空字符串时,有几个选项:

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

等等。

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

这里的资源将为您提供更多信息。具体来看一下“转换为布尔值”部分


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

这里的资源将为您提供更多信息。具体来看一下“转换为布尔值”部分


您无法通过这种方式检查字符串是否为空。考虑这一点:

$test = "0";
if ($test)
    echo $test;
else
    echo "Empty";
上面的代码打印“空”,因为“0”是错误的值。请参见“转换为布尔值”一节

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

您无法通过这种方式检查字符串是否为空。考虑这一点:

$test = "0";
if ($test)
    echo $test;
else
    echo "Empty";
上面的代码打印“空”,因为“0”是错误的值。请参见“转换为布尔值”一节

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

虽然这可能是一个有用的建议,但它并不能真正解决问题。确实如此
empty
检查
isset
empty
。虽然这可能是一个有用的建议,但它并不能真正解决问题。确实如此
empty
检查
isset
empty
。通读和可能会有帮助。通读和可能会有帮助。
if($testVar)
if(isset($testVar))
!如果设置
$testVar=0
然后
if($testVar)
计算为
false
,而
isset($testVar)
返回
true
我的答案是基于他正在做的字符串测试。他没有提到计算布尔变量