PHP变量等于true,无论值是什么,甚至是0
这是var_转储:PHP变量等于true,无论值是什么,甚至是0,php,variables,Php,Variables,这是var_转储: object(stdClass)#27 (8) { ["SETTING_ID"]=> string(2) "25" ["SETTING_SOURCE"]=> string(2) "XV" ["SETTING_FLEET"]=> string(3) "313" ["SETTING_EXAM"]=> string(1) "A" ["SETTING_HIDE"]=> string(1) "0"
object(stdClass)#27 (8) {
["SETTING_ID"]=> string(2) "25"
["SETTING_SOURCE"]=> string(2) "XV"
["SETTING_FLEET"]=> string(3) "313"
["SETTING_EXAM"]=> string(1) "A"
["SETTING_HIDE"]=> string(1) "0"
["SETTING_THRESHOLD"]=> string(1) "0"
["SETTING_COUNT"]=> string(8) "POSITIVE"
["SETTING_USAGE"]=> string(7) "MILEAGE"
}
我正在测试的变量正在设置_HIDE。这是使用CodeIgniter框架从MySQL中提取的。我不知道是不是因为我在工作了一天之后变得很胖,或者是什么,但是不管变量的值是什么,任何针对它的if语句都会返回true,即使是当类型转换为布尔值或直接字符串比较时,即==“0”或==“1”
任何有一双新眼睛的人都想让我觉得自己很傻!?:)
我想澄清一下:
已尝试以下方法:
if($examSetting->SETTING_HIDE == "1") { $showOnABC = "checked=\"checked\""; }
if((bool)$examSetting->SETTING_HIDE) { $showOnABC = "checked=\"checked\""; }
if($examSetting->SETTING_COUNT == "POSITIVE") further on in my code works perfectly.
可能对你有用请看:这让我得出结论,这里还有其他东西在起作用,也许是另一段代码
<?php // RAY_temp_kaigoh.php
error_reporting(E_ALL);
echo '<pre>';
$thing = new StdClass;
$thing->SETTING_ID = "25";
$thing->SETTING_SOURCE = "XV";
$thing->SETTING_FLEET = "313";
$thing->SETTING_EXAM = "A";
$thing->SETTING_HIDE = "0";
$thing->SETTING_THRESHOLD = "0";
$thing->SETTING_COUNT = "POSITIVE";
$thing->SETTING_USAGE = "MILEAGE";
var_dump($thing);
if ( $thing->SETTING_HIDE) echo "TRUTHY";
if (!$thing->SETTING_HIDE) echo "FALSY";
我认为这只是那些奇怪的烦人的事情之一,但是
现在的工作完全符合预期
感谢您的关注。粘贴您的if-else语句
查看此真值表:已尝试以下操作:if($examset->SETTING\u HIDE==“1”){$showOnABC=“checked=\”checked\;}if((bool)$examset->SETTING\u HIDE){$showOnABC=“checked=\”checked\”}第一个例子没有错。您的问题是,无论您在代码后面如何使用$showOnABC
。您应该在if
中添加exit()
或类似的内容,以验证它并排除其他代码。在分配到您的对象属性之前,先强制转换您的值。Ray,非常感谢您花时间回答我的问题。但是,没有代码更改,只是一次刷新,它已经开始正常工作了。非常奇怪。
<?php // RAY_temp_kaigoh.php
error_reporting(E_ALL);
echo '<pre>';
$thing = new StdClass;
$thing->SETTING_ID = "25";
$thing->SETTING_SOURCE = "XV";
$thing->SETTING_FLEET = "313";
$thing->SETTING_EXAM = "A";
$thing->SETTING_HIDE = "0";
$thing->SETTING_THRESHOLD = "0";
$thing->SETTING_COUNT = "POSITIVE";
$thing->SETTING_USAGE = "MILEAGE";
var_dump($thing);
if ( $thing->SETTING_HIDE) echo "TRUTHY";
if (!$thing->SETTING_HIDE) echo "FALSY";
if($examSetting->SETTING_HIDE == "1") {
$showOnABC = "checked=\"checked\"";
} else {
$showOnABC = "";
}