所以我有这段代码:
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
答案 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"
。