我正在尝试对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类型转换为数组可能有什么问题
答案 0 :(得分:0)
嗯,SimpleXMLElement::children()将始终根据手册返回SimpleXMLElement实例。
根据var_dump确实如此。
但是由于命令没有子节点,返回的对象没有可访问的属性,导致0 when casting to array:
如果将对象转换为数组,则结果是一个数组 元素是对象的属性。键是成员变量 名称,有一些值得注意的例外:整数属性是 不可访问;私有变量具有前缀的类名 变量名;受保护的变量前面有一个'*' 变量名。这些前置值在任一侧都有空字节。
无法找到有关已更改类型转换为5.2 to 5.3的数组的任何内容。
所以这可能(可能)是一个错误......