php int比较“小于或等于”返回空还是空?

时间:2018-07-29 17:22:19

标签: php boolean comparison

以下表达式

echo ('dfsdfds: '.(int)$item[0] . '   ' . 
(int)$box[0] . '   ' . 
( ( (int)$item[0] <= (int)$box[0] )?true:false) );

呼应这个

dfsdfds: 70 25 

这些值来自StdClass对象,因此这些值存储为字符串,因此强制转换为int。 我希望比较表达式<=返回1或0,但不返回n​​ull或为空... 怎么了?我在想什么呢? 我尝试将TRUE替换为TRUE,将FALSE替换为false, 我试图输出表达式本身  但是输出没有改变...它总是空的

1 个答案:

答案 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') );

或者如果您想分别拥有01,则可以强制强制转换为int

echo ('dfsdfds: '.(int)$item[0] . '   ' . 
(int)$box[0] . '   ' . 
( ( (int)$item[0] <= (int)$box[0] )?true:(int)false) );

({true已自动转换为"1"