0

这是 var_dump:

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" 
} 

我正在测试的变量是 SETTING_HIDE。这是使用 Code igniter 框架从 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.
4

3 回答 3

0
if($examSetting->SETTING_HIDE !== "0") {  $showOnABC = "checked=\"checked\""; } 

可能对你有用

于 2012-12-17T16:53:53.037 回答
0

请参阅:http ://www.laprbass.com/RAY_temp_kaigoh.php这使我得出结论,这里还有其他东西在起作用,也许是另一个代码块?

<?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";
于 2012-12-17T17:01:24.010 回答
0

我认为这只是那些奇怪的烦人的事情之一,但是,

if($examSetting->SETTING_HIDE == "1") {
$showOnABC = "checked=\"checked\"";
} else {
$showOnABC = "";
}

现在完全按预期工作。

无论如何,感谢您的关注。

于 2012-12-17T17:02:01.393 回答