奇怪的IF语句返回布尔值


PHP Weird IF statement result on boolean?

所以我有这个代码:

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

结果是:

你知道为什么吗?我试着把IF改成var=TRUE, var===TRUE, var==" TRUE ", var=1

这些都不起作用。我以前没有遇到过这种问题,真是奇怪……

注:If语句在两个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如果语句为真

你正在用一个布尔值测试一个字符串。

求值为false的字符串只有"answers"0"。

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

具有任何值的字符串将始终计算为布尔值true。将比较值改为$argi[2][$iterate2][$iterate] == "TRUE"