2012-05-07 78 views
3

鑑於這種對象:轉換stdClass的XML數據對象數組中的PHP

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

我怎麼能這樣XML數據轉換爲使用PHP的數組?

+0

數組應該是什麼樣子? –

回答

10

只需將它轉換爲數組:在這個問題

$arr = (array) $obj; 
+0

有用但不是原問題的解決方案。 – micrub

1

XML數據是無效的。

  1. 它沒有根元素
  2. 客戶ID =「1234567」登錄ID =「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); 
}