我在非常简单的php中的错误是什么?
我制作了一个非常简单的php来检查数据,但它不起作用我在非常简单的php中的错误是什么?,php,if-statement,Php,If Statement,我制作了一个非常简单的php来检查数据,但它不起作用 <?php $ngl="G"; if ($parsed[0][4]="0") { $ngl="NG"; } if ($parsed[0][5]="0") { $ngl="NG"; } ?> 但是我知道$parsed[0][4]和$parsed[0][5]是0。问题是输出是G,而不是NG!我还试图删除$ngl=“G”但是输出是空的 我需要修理什么 我只使用了,
<?php
$ngl="G";
if ($parsed[0][4]="0") {
$ngl="NG";
}
if ($parsed[0][5]="0") {
$ngl="NG";
}
?>
但是我知道$parsed[0][4]
和$parsed[0][5]
是0
。问题是输出是G
,而不是NG
!我还试图删除$ngl=“G”代码>但是输出是空的
我需要修理什么
我只使用了,但它是正确的。thx all.检查时使用=
而不是=
<?php
$ngl="G";
if ($parsed[0][4]=="0") {
$ngl="NG";
}
if ($parsed[0][5]=="0") {
$ngl="NG";
}
?>
您正在分配(=
)一个值,而不是比较(=
或==
)
说明:
当您在if语句中放入一个赋值,如$parsed[0][4]=“0”
,则if
会将“0”计算为false
。它只计算“0”的原因是因为行$parsed[0][4]=“0”
(任何赋值)返回操作的右侧(“0”)
=
vs==
:
=
是一个松散的比较,它不比较类型。ie“2”==2
为true
(即使一个是字符串,另一个是整数)
=
是一种严格的比较,既比较类型也比较值。ie“2”==2
为false
if语句对“0”使用前一个(松散的)比较,当然0是二进制的假值(0和1),因此0==false
和“0”==false
都计算为true-但是,0==false
将返回false,因为0
是一个整数,而false
是一个布尔值。您可以使用=
来设置变量。您可以使用==
进行比较
<?php
$ngl="G";
if ($parsed[0][4]=="0") {
$ngl="NG";
}
if ($parsed[0][5]=="0") {
$ngl="NG";
}
?>
您应该使用=
而不是=
:
<?php
$ngl="G";
if ($parsed[0][4]=="0") {
$ngl="NG";
}
if ($parsed[0][5]=="0") {
$ngl="NG";
}
?>
原因是=
是赋值运算符,而=
是比较运算符(这是您想要的)
$parsed[0][4]==“0”
将计算为0
,这是错误的,因此不会更改$ngl
。同样的情况发生在$parsed[0][5]==“0”
这行没有检查$parsed[0][4]是否为零。它等于零
if ($parsed[0][4]="0") {
换成
if ($parsed[0][4]=="0") {
您将赋值运算符=
与相等运算符=
混淆,请尝试使用double=
像if($parsed[0][4]==“0”){
Hm…想知道谁会赢得这场比赛;-)@Fred好吧,我是第一个,所以以我的经验,不是我:我认为这个问题将创世界纪录-对于提到的===
操作符,给出的大多数答案都是完全相同的+1,以及评估失败的原因。你能补充一些解释我们之间的差异吗如果我使用==
和==
?如果我使用==
、&&
或|
,会发生什么?你能解释真值表以及所有这些运算符是如何影响这段代码的吗?所有这些运算符的“官方”解释在哪里?DevlshOne它们在这里不相关
<?php
$ngl="G";
if ($parsed[0][4]=="0") {
$ngl="NG";
}
if ($parsed[0][5]=="0") {
$ngl="NG";
}
?>
if ($parsed[0][4]="0") {
if ($parsed[0][4]=="0") {