以下表达式
echo ('dfsdfds: '.(int)$item[0] . ' ' .
(int)$box[0] . ' ' .
( ( (int)$item[0] <= (int)$box[0] )?true:false) );
呼应这个
dfsdfds: 70 25
这些值来自StdClass对象,因此这些值存储为字符串,因此强制转换为int。 我希望比较表达式<=返回1或0,但不返回null或为空... 怎么了?我在想什么呢? 我尝试将TRUE替换为TRUE,将FALSE替换为false, 我试图输出表达式本身 但是输出没有改变...它总是空的
答案 0 :(得分:3)
这是由于在数据类型之间进行转换时PHP中的某些strange (although documented) default behaviour:
布尔值FALSE转换为“”(空字符串)。
您可以将代码更改为这可以看到差异:
echo ('dfsdfds: '.(int)$item[0] . ' ' .
(int)$box[0] . ' ' .
( ( (int)$item[0] <= (int)$box[0] )?'true':'false') );
或者如果您想分别拥有0
或1
,则可以强制强制转换为int
:
echo ('dfsdfds: '.(int)$item[0] . ' ' .
(int)$box[0] . ' ' .
( ( (int)$item[0] <= (int)$box[0] )?true:(int)false) );
({true
已自动转换为"1"
)