在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 ++允许运算符重载,这暴露了运算符实现的细节。