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

时间:2011-09-05 05:49:56

标签: php casting simplexml php-5.3

我正在尝试对SimpleXML Element执行计数。它给了我关于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的根元素。

只是想知道在PHP 5.3中将SimpleXML类型转换为数组可能有什么问题

1 个答案:

答案 0 :(得分:0)

嗯,SimpleXMLElement::children()将始终根据手册返回SimpleXMLElement实例。

根据var_dump确实如此。

但是由于命令没有子节点,返回的对象没有可访问的属性,导致0 when casting to array

  

如果将对象转换为数组,则结果是一个数组   元素是对象的属性。键是成员变量   名称,有一些值得注意的例外:整数属性是   不可访问;私有变量具有前缀的类名   变量名;受保护的变量前面有一个'*'   变量名。这些前置值在任一侧都有空字节。

无法找到有关已更改类型转换为5.2 to 5.3的数组的任何内容。

所以这可能(可能)是一个错误......