我即將完成一個腳本,它使用simplexml來處理一些數據,但我被卡在最後。SimpleXML數據處理
那麼,沒有卡住,但好奇和卡住。
$ tmp包含我的XML(約750k),目標是將其轉換爲fputcsv(包含每行數組的父數組)的格式。
下面的工作,但我可以使用fputcsv併發送回用戶,而不是一個很好的乾淨的數組有很多的開銷,我不需要寫入一個CSV文件,這會造成我的問題毫無疑問與fputcsv。我已經將輸出清理成只有幾個標題列和幾行,但實際上有20列和數百行。無論如何清理fputcsv之前?
// Process XML response into arrays for fputcsv
$csv = array();
$xml = simplexml_load_string($tmp);
// Create array and loop each column for header row
$header_row = array();
foreach ($xml->RESPONSE->DATA->HEADER->COLUMN as $column) {
$header_row[] = $column;
}
$csv[] = $header_row;
// Create array and loop each column for header row
foreach ($xml->RESPONSE->DATA->ROW as $row) {
$data_row = array();
foreach ($row->COLUMN as $datacolvalue){
$data_row[] = $datacolvalue;
}
$csv[] = $data_row;
unset($data_row);
}
// Output var to check for accuracy (later add fputcsv)
var_dump($csv);
輸出(print_r的 - 如果需要的話可以的var_dump):
Array
(
[0] => Array
(
[0] => SimpleXMLElement Object
(
[0] => date
)
[1] => SimpleXMLElement Object
(
[0] => name
)
)
[1] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[data_type] => text
)
[0] => Aug 01, 2011
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[data_type] => text
[id] => 8699636
)
[0] => bfxgbfgxbfbgxfsfsdf
)
)
[2] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[data_type] => text
)
[0] => Aug 01, 2011
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[data_type] => text
[id] => 8699694
)
[0] => bfxgbfgxbfbgxf
)
)
)
希望的輸出(外推每增加列和刪除@屬性):
array(
array("date","name"),
array("Aug 01, 2011","bfxgbfgxbfbgxfsfsdf"),
array("Aug 01, 2011","bfxgbfgxbfbgxf")
)
很難想象你在找什麼 – ajreal