在PHP中如何正确/错误的工作?
我想知道PHP如何在内部处理真/假比较。 我知道true被定义为1,false被定义为0.当我做if("a"){ echo "true";}
它回声“ 真 ”。 PHP如何将“a”识别为1?
这在布尔文和types比较表的PHP文档中有介绍。
转换为布尔值时,以下值被认为是FALSE:
- 布尔值
FALSE
本身 - 整数
0
(零) - 浮点数
0.0
(零) - 空string和string
'0'
- 具有零元素的数组
- 具有零成员variables的对象(仅限PHP 4)
- 特殊types的
NULL
(包括未设置的variables) - 由空标签创build的SimpleXML对象
其他每个值都被视为“真” 。
零是假的,非零是真的。
在PHP中,您可以使用===
运算符更明确地进行testing。
if (0==false) echo "works"; // will echo works if (0===false) echo "works"; // will not echo anything
严格检查的最佳运营商是
if($foo === true){}
这样,你真的检查是否真的,而不是1或只是设置。
PHP使用弱types(它称为“types杂耍”),这是一个坏主意(虽然这是另一次谈话)。 当你试图在一个需要布尔值的上下文中使用一个variables时,它会根据一些在这里可用的大多数任意规则将任何你的variables转换为一个布尔值: http : //www.php.net/manual/en/language .types.boolean.php#language.types.boolean.casting
将运算符看作一元函数: is_false(type value)
,返回true或false,取决于具体types和值的确切实现。 考虑是否声明通过语法糖隐含地调用这样的函数。
其他的可能性是该types具有cast操作符,这将隐式地将types转换为另一种types,在这种情况下,string转换为布尔值。
PHP不公开这些细节,但是C ++允许运算符重载,这暴露了运算符实现的细节。