3

このオブジェクトを考えると:

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

PHP を使用してこの XML データを配列に変換するにはどうすればよいですか?

4

3 に答える 3

10

配列にキャストするだけです:

$arr = (array) $obj;
于 2012-05-07T08:26:14.113 に答える
1

質問の XML データが無効です。

  1. ルート要素がありません
  2. CustomerId="1234567"LoginId="1234567" は xml 解析を中断します

単純な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 );
}
于 2013-06-26T16:49:15.273 に答える