所有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
我的答案是基于他正在做的字符串测试。他没有提到计算布尔变量