将带有XML数据的stdClass对象转换为PHP中的数组

时间:2012-05-07 07:04:13

标签: php xml arrays type-conversion

鉴于此对象:

stdClass Object (
    [customerdata] => <TPSession userid="22" CustomerId="123456"LoginId="123456"/><TPSession userid="26" CustomerId="1234567"LoginId="1234567" />
)

如何使用PHP将此XML数据转换为数组?

3 个答案:

答案 0 :(得分:10)

只需将其转换为数组:

$arr = (array) $obj;

答案 1 :(得分:1)

问题中的Xml数据无效。

  1. 它没有根元素
  2. 客户ID =&#34; 1234567&#34;登录ID =&#34; 1234567&#34;打破xml解析
  3. 您需要将其包装到根元素中,解决属性问题,而不是使用简单的xml解析器来生成可以转换为数组的对象。

    实施例

    $o = new stdClass ();
    $o->customerdata = '<TPSession userid="22" CustomerId="123456"LoginId="123456" /><TPSession userid="26" CustomerId="1234567"LoginId="1234567" />';
    function wrap($xml) {
        return sprintf ( '<x>%s</x>', $xml );
    }
    function fix($xml) {
        return str_ireplace ( '"LoginId', "\" LoginId", $xml );
    }
    
    $xml = wrap ( fix ( $o->customerdata ) );
    $sx = new SimpleXMLElement ( $xml );
    $sx = ( array ) $sx;
    $sx = $sx ['TPSession'];
    foreach ( $sx as $row ) {
        var_dump ( ( array ) $row );
    }
    

答案 2 :(得分:0)

如果我理解你想将包含在object元素中的字符串转换为数组,换句话说,将xml字符串转换为数组。

这就是你要找的......

http://php.net/manual/en/function.simplexml-load-string.php

按照此页面上的示例进行操作。