Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP变量等于true,无论值是什么,甚至是0_Php_Variables - Fatal编程技术网

PHP变量等于true,无论值是什么,甚至是0

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"

这是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" 
    ["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 = "";
}