PHP布尔值:为什么'true==';假';`这是真的吗?
下面是一个示例代码来显示我的问题,当我做我的工作时,我特别注意这个, 但我找不到有关这方面的文章,所以哪一篇可以帮助我解决这个问题?让我们看看下面的PHP代码PHP布尔值:为什么'true==';假';`这是真的吗?,php,Php,下面是一个示例代码来显示我的问题,当我做我的工作时,我特别注意这个, 但我找不到有关这方面的文章,所以哪一篇可以帮助我解决这个问题?让我们看看下面的PHP代码 <?php $sFalse = 'false'; if ($sFalse) { echo '1. true <br/>';} else { echo '1. false <br/>'; } if (true == $sFalse) { echo '
<?php
$sFalse = 'false';
if ($sFalse) {
echo '1. true <br/>';}
else {
echo '1. false <br/>';
}
if (true == $sFalse) {
echo '2. true <br/>';}
else {
echo '2. false <br/>';
}
?>
我不明白为什么两者都打印为true?因为
'false'
不是一个假值,而是一个包含某些内容的字符串
因此,当进行比较时,'false'
等于true
如果出现以下情况,则该值为false:
- 它是false:
$val=false代码>
- 它是一个空字符串:
$val=”“代码>
- 它是零:
$val=0代码>
- 它为空:
$val=null代码>
请参阅。这是因为严格和非严格之间的区别 请查看Booleans的PHP文档,以获得一些好的示例和解释:
//这是一个字符串,因此在If条件下为true
$sTrue='false';
如果($sTrue){
回显“1.true
;”
否则{
回声“1.假
”;
}
//这里你用布尔值检查字符串,所以它总是真的
如果(真==$sTrue){
回显“2.true
;”
否则{
回声“2.假
”;
}
您应该使用==
进行严格的类型检查
true===$sTrue
-它是false正如您所知,空字符串'
可以强制转换为布尔类型false
。但是'false'不是空字符串,因此php不能将'false'转换为布尔值false。另一方面,表达式'false'=''
在php中为false。您有2个if条件,因此需要单独考虑它们。这是一个基本点,因为每一个都是自己独特的操作,不会直接影响到另一个
首先,我们创建一个字符串“false”
这是一个字符串,不是布尔值
$sFalse = 'false';
然后我们问(如果是我们想回答的问题)是$sFalse true,它是一个包含内容的字符串,PHP认为是true,因此它触发echo'1。正确的
代码>
if ($sFalse) {
echo '1. true <br/>';
}else {
echo '1. false <br/>';
}
if (true == $sFalse) {
echo '2. true <br/>';
}else{
echo '2. false <br/>';
}
现在这个if($sFalse)
和if(true==$sFalse)
在PHP中是等价的,所以基本上你问的是相同的问题2x
现在我们知道我们在两个不同的操作中问同样的问题,它们是一样的,这有什么奇怪的吗?如果我给你一个红色的球,我问球是红色的,你说“是”如果我再问一次,球是红色的,你认为答案会是什么
现在,如果您使用三个严格的类型检查来询问if(true===$sFalse)
,那么基本上类型必须匹配。然后它会触发else,因为'false'
是true
,但它不是布尔值true
如果改为将变量设置为false boolean$sFalse=false
则会触发其他两种情况(无论是=
还是===
)
你的问题中不清楚预期的产出应该是什么,所以我无法解释更多
if ($sFalse) {
echo '1. true <br/>';
}else {
echo '1. false <br/>';
}
if (true == $sFalse) {
echo '2. true <br/>';
}else{
echo '2. false <br/>';
}