PHP 5.3 SimpleXML到数组类型转换问题


PHP 5.3 SimpleXML to array type casting issue

我试图在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…