【发布时间】:2011-08-31 13:57:30
【问题描述】:
我即将完成一个使用 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
)
)
)
期望的输出(为每个附加列外推并删除@attributes):
array(
array("date","name"),
array("Aug 01, 2011","bfxgbfgxbfbgxfsfsdf"),
array("Aug 01, 2011","bfxgbfgxbfbgxf")
)
【问题讨论】:
-
很难想象你在找什么
标签: php arrays object simplexml