2011-09-05 75 views
2

我想对SimpleXML元素进行计数。它在PHP 5.3和PHP 5.2上给了我不同的结果。我的代码看起来像如下:PHP 5.3 SimpleXML到数组类型投射问题

$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

+1

如何只'回声计数(XML的$>的孩子());' – ajreal

+0

没有孩子,无论哪个PHP版本。 –

回答

0

好,SimpleXMLElement::children()将根据手动总是返回一个SimpleXMLElement实例。

它根据var_dump做。

但作为命令没有子,返回的对象具有其产生至0 when casting to array没有可访问的属性:

如果对象被转换成一个阵列,其结果是一个数组,其 元素是该对象的属性。密钥是成员变量 的名称,但有一些值得注意的例外:整数属性为 无法访问;私有变量的类名前加 变量名;受保护变量的变量名前加'*'作为前缀。这些前置值在任一侧都有空字节。

对于5.2 to 5.3找不到任何关于更改类型转换为数组的内容。

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