2013-03-06 95 views
0

我試圖將XML文件讀入數組,並且遇到了一些麻煩。這裏是我的代碼看起來像至今:從SimpleXMLElement的xpath引用中提取數據對象

$inst = new SimpleXMLElement($xml); 
foreach($inst->xpath("record[@id='" . $range . "']") as $u) { 
     foreach($fields as $field) { 
      $results[$field] = $u->$field; 
     } 
} 

但是當我做print_r($results),這是何等的輸出:

Array 
(
[field1] => SimpleXMLElement Object 
    (
     [0] => field1Data 
    ) 

[field2] => SimpleXMLElement Object 
    (
     [0] => field2Data 
    ) 

[field3] => SimpleXMLElement Object 
    (
     [0] => field3Data 
    ) 
) 

我怎樣才能從SimpleXMLElement Object獲取數據直並將其存儲在數組而不是這樣做?我試圖以像$u->$field[0]這樣的數組的形式訪問它,但是這也不起作用。

+0

simpleXml不會給你一個數組。您可以通過迭代對象來構建數組。 – 2013-03-06 05:31:30

+1

嘗試轉換爲字符串,即'$ results [$ field] =(string)$ u - > $ field;' – 2013-03-06 05:33:31

+0

將其轉換爲字符串,謝謝! – SISYN 2013-03-06 05:35:54

回答

0

鑄造一個SimpleXMLElement串是通用的解決方案(見"Forcing a SimpleXML Object to a string, regardless of context"的規範問題),包含所有SimpleXMLElement個完整的陣列一樣通過xpath()返回或像你創建你自己的,常見的方法是將陣圖到trim

$results = array_map('trim', $results); 

strval

$results = array_map('strval', $results); 

例如:

$inst = new SimpleXMLElement($xml); 
list($u) = $inst->xpath("record[@id='" . $range . "']") 
foreach ($fields as $field) { 
    $results[$field] = $u->$field; 
} 

$results = array_map('strval', $results);