【问题标题】:PHP 5.3 SimpleXML to array type casting issuePHP 5.3 SimpleXML 到数组类型转换问题
【发布时间】:2011-09-05 05:49:55
【问题描述】:

我正在尝试对 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-&gt;count,但这并没有考虑到 XML 的根元素。

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

【问题讨论】:

  • echo count($xml-&gt;children());怎么样
  • 无论哪个php-version都没有孩子。

标签: php casting simplexml php-5.3


【解决方案1】:

好吧,SimpleXMLElement::children() 将始终根据手册返回一个 SimpleXMLElement 实例。

它是根据 var_dump 执行的。

但由于 command 没有子对象,因此返回的对象没有可访问的属性,这会产生 0 when casting to array

如果将对象转换为数组,则结果是一个数组,其 元素是对象的属性。键是成员变量 名称,除了一些值得注意的例外:整数属性是 无法访问;私有变量的类名附加到 变量的名称;受保护的变量前面有一个“*” 变量的名称。这些前置值在两边都有空字节。

找不到任何关于将5.2 to 5.3 的类型转换为数组的信息。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    相关资源
    最近更新 更多