0

我做了一个非常简单的 php 来检查数据,但它不起作用。

<?php
    $ngl="G";
    if ($parsed[0][4]="0") {
        $ngl="NG";
    }
    if ($parsed[0][5]="0") {
        $ngl="NG";
    }
?>

和输出

<?php echo $ngl; ?>

总是

G

但我知道$parsed[0][4]并且$parsed[0][5]0。问题是输出是G而不是NG!我也尝试删除$ngl="G";,但输出什么都没有。

我需要修理什么?

我只是使用 = 但 == 它是正确的。谢谢大家。

4

5 回答 5

1

您正在分配 ( =) 一个值而不是比较 (=====)

<?php
$ngl = "G";
if($parsed[0][4] == "0")
{
    $ngl = "NG";
}
if($parsed[0][5] == "0")
{
    $ngl = "NG";
}
?>

解释:

当您$parsed[0][4]="0"在 if 语句中进行赋值时,if会将“0”评估为false. 它只评估“0”的原因是因为该行$parsed[0][4]="0"(任何赋值)返回操作的右侧(“0”)

== vs === : php.net - 比较运算符

==是不比较类型的松散比较。即"2" == 2true(即使一个是字符串,另一个是整数)

===是严格的比较,比较类型和值。即"2" === 2false

if 语句在“0”上使用前一个(松散)比较,当然 0 是二进制(0 和 1)中的假值,因此0 == false两者"0" == false都评估为真 - 但是,0 === false将返回假作为0整数,而false是一个布尔值。

于 2013-08-12T15:08:28.650 回答
0

检查时==不使用=

<?php
$ngl="G";
if ($parsed[0][4]=="0") {
$ngl="NG";
}
if ($parsed[0][5]=="0") {
$ngl="NG";
}
?>
于 2013-08-12T15:08:25.583 回答
0

=用来设置变量。你==用来比较。

<?php
    $ngl="G";
    if ($parsed[0][4]=="0") {
        $ngl="NG";
    }
    if ($parsed[0][5]=="0") {
        $ngl="NG";
    }
?>
于 2013-08-12T15:08:31.617 回答
0

您应该使用==而不是=

<?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"

于 2013-08-12T15:08:53.960 回答
0

此行不检查 $parsed[0][4] 是否为零。它使它为零。

if ($parsed[0][4]="0") {

将其更改为

if ($parsed[0][4]=="0") {
于 2013-08-12T15:09:27.143 回答