在非常简单的PHP中我的错误是什么?

时间:2013-08-12 15:06:41

标签: php if-statement

我制作了一个非常简单的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";,但输出什么都没有。

我需要修理什么?

我只是使用=但==它是正确的。 thx all。

5 个答案:

答案 0 :(得分:1)

您要为(=)分配值而不是比较(=====

<?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 === php.net - Comparison Operators

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

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

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

答案 1 :(得分:0)

检查

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

答案 2 :(得分:0)

您使用=来设置变量。您可以使用==进行比较。

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

答案 3 :(得分: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"

也会发生同样的事情

答案 4 :(得分:0)

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

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

将其更改为

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