我试图在SimpleXML元素上执行计数。它在PHP 5.3和PHP 5.2上给我不同的结果。我的代码如下所示:
$xml = new SimpleXMLElement('<command action="foo"/>');
print_r(count((array)$xml->children()));`
在PHP 5.2上打印"1",在PHP 5.3上打印"0":(我知道我可以使用$xml->count
,但这没有考虑到XML的根元素。
只是想知道什么可能是错误的类型转换SimpleXML到数组在PHP 5.3
根据手册,SimpleXMLElement::children()将始终返回一个SimpleXMLElement实例。
根据var_dump。
但是由于command没有子对象,返回的对象没有可访问的属性,当强制转换为array时将产生0:
如果将对象转换为数组,则结果为数组元素是对象的属性。键是成员变量名称,有几个值得注意的例外:整数属性是达不到的;类前加上私有变量的类名变量名;受保护的变量前面有一个'*'变量的名字。这些前置值的两边都有空字节。
找不到任何关于从5.2到5.3类型转换为数组的内容
所以这可能是一个bug…