PHP Weird IF语句结果是否为布尔值?

时间:2015-09-24 22:05:00

标签: php if-statement for-loop foreach

所以我有这段代码:

echo $argi[2][$iterate2][$iterate];
if ($argi[2][$iterate2][$iterate]==TRUE){
    echo " It's true ";
}

结果是:

是的,这是真的

false这是真的

你知道为什么吗? 我试图将IF改为var = TRUE,var === TRUE,var ==“true”,var = 1

这些都没有奏效。我之前没有遇到过那种问题,这真的很奇怪......

P.S。如果语句在两个foreach循环中。我不知道这是否重要...

修改

我将echo更改为var_dump,结果是:

string(5) "false" It's true

编辑2

这是脚本的一部分:

$iterate2=0;
foreach ($UpdateData as $key => $value) {
    $sql.="UPDATE `addtmptable` SET ";
    $sql.="$key = CASE ";
    $iterate=0;

        foreach ($value as $val) {

            $sql.="WHEN user = '$UpdateDataU[$iterate]' THEN $val ";

                var_dump($argi[2][$iterate2][$iterate]);
                if ($argi[2][$iterate2][$iterate]==true){
                    echo " It's true ";
                }
            $iterate++;
        }

    $sql.=";";
    $iterate2++;
}

我停止了这一点,如果陈述是真的,我想解雇内在的foreach

2 个答案:

答案 0 :(得分:4)

您正在针对布尔值测试字符串。

评估为false的唯一字符串是""和" 0"。

if (strtolower($argi[2][$iterate2][$iterate]) != "false") {
    echo " It's true ";
}

答案 1 :(得分:0)

字符串with any value将始终评估为布尔值true。将您的比较更改为$argi[2][$iterate2][$iterate] == "TRUE"