我对simplexml评估有一个非常尴尬和特殊的问题。成功解析SimpleXMLElement与'false'的比较返回'true'
代码:
$simplexml = simplexml_load_string($xmlstring);
var_dump($simplexml);
var_dump($simplexml == false); //this comparison
的var_dump($ simplexml的)返回simplexml的我的实际结构,但比较返回“真”这个特定的SimpleXML,这是我无法证明,因为我的合同结构。
我敢肯定,这是非常特定的问题,因为我尝试了其他XML字符串,并且比较返回'false'。
$simplexml = simplexml_load_string('<a><b>test</b></a>');
var_dump($simplexml); //returns the actual structure
var_dump($simplexml == false); //returns false
我使用'==='操作符解决了这个问题,但我并不满足于让它工作。我想了解为什么'=='运算符返回true。
我阅读了关于这两个操作符和SimpleXMLElement的内容,并且在我看来,它应该为两个操作符都返回'false'。 成功解析SimpleXMLElement和布尔型'false'以返回'true'之间进行比较的可能原因是什么?
这正是发生了什么事情。我再次做了测试,现在一切都变得有意义了。我只是不知道没有文本值的父标记带有儿童标记带/不带文本值被认为是空的。谢谢 – 2012-04-13 11:19:16
可能发生这种情况是因为我在文本节点之前得到了太多层次。 – 2012-04-13 11:37:19