[英]echo multidimensional array to csv
I have json array like bellow: 我有像下面这样的json数组:
Array
(
[total] => 1
[rows] => Array
(
[0] => Array
(
[date] => 2014-11-12
[A] => 1
[B] => 2
[C] => 2
[D] => No
[E] => New
[F] => New
[G] => 1
[H] => 1
[I] => 1
[A] => 1
[J] => 1
[B] => 1
)
[1] => Array
(
[date] => 2014-12-12
[A] => 1
[B] => 1
[C] => 2
[D] => No
[E] => New
[F] => New
[G] => 2
[H] => 2
[I] => 2
[A] => 2
[J] => 2
[B] => 2
)
)
)
I want to echo like below: 我想像下面这样回声:
date A B C D E F G H I A J B
2014-11-12 1 2 2 No New New 1 1 1 1 1 1
2014-12-12 1 1 2 No New New 2 2 2 2 2 2
how i do this thing what is the best way any suggestion. 我如何做这件事是什么建议的最好方法。
You can just use plain foreach in this case. 在这种情况下,您可以只使用普通的foreach。 As for the headers, you may need to use
array_keys()
for them. 至于标题,您可能需要对它们使用
array_keys()
。 Example: 例:
<?php
$array = [ 'total' => 1, 'rows' => [ [ 'date' => '2014-11-12', 'A' => '1', 'B' => '2', 'C' => '2', 'D' => 'No', 'E' => 'New', 'F' => 'New', 'G' => '1', 'H' => '1', 'I' => '1', 'A' => '1', 'J' => '1', 'B' => '1', ], [ 'date' => '2014-12-12', 'A' => '1', 'B' => '1', 'C' => '2', 'D' => 'No', 'E' => 'New', 'F' => 'New', 'G' => '2', 'H' => '2', 'I' => '2', 'A' => '2', 'J' => '2', 'B' => '2', ], ],];
$keys = array_keys(reset($array['rows']));
?>
<table cellpadding="10">
<thead>
<tr align="left">
<?php foreach($keys as $header): ?>
<th><?php echo $header; ?></th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php foreach($array['rows'] as $row): ?>
<tr><?php foreach ($row as $value): ?>
<td><?php echo $value; ?></td>
<?php endforeach; ?></tr>
<?php endforeach; ?>
</tbody>
</table>
Printing in CSV: 以CSV打印:
$array = [ 'total' => 1, 'rows' => [ [ 'date' => '2014-11-12', 'A' => '1', 'B' => '2', 'C' => '2', 'D' => 'No', 'E' => 'New', 'F' => 'New', 'G' => '1', 'H' => '1', 'I' => '1', 'A' => '1', 'J' => '1', 'B' => '1', ], [ 'date' => '2014-12-12', 'A' => '1', 'B' => '1', 'C' => '2', 'D' => 'No', 'E' => 'New', 'F' => 'New', 'G' => '2', 'H' => '2', 'I' => '2', 'A' => '2', 'J' => '2', 'B' => '2', ], ],];
$data[] = array_keys(reset($array['rows'])); // push header inside
$data = array_merge($data, $array['rows']); // push values inside
$file = fopen('whatevertname.csv', 'w+');
foreach ($data as $value) {
fputcsv($file, $value);
}
fclose($file);
Assuming you are writting csv files using fputcsv() function, 假设您正在使用fputcsv()函数编写 csv文件,
your generated 'csv_array' structure should be look like this, after you insert first row data, before using fputcsv() 在插入第一行数据之后,在使用fputcsv()之前,生成的“ csv_array”结构应如下所示
Array
(
[0] => Array
(
[0] => date
[1] => A
[2] => B
[3] => C
[4] => D
[5] => E
[6] => F
[7] => G
[8] => H
[9] => I
[10] => A
[11] => J
[12] => B
)
[1] => Array
(
[0] => 2014-12-12
[1] => 1
[2] => 2
[3] => 2
[4] => No
[5] => New
[6] => New
[7] => 1
[8] => 1
[9] => 1
[10] => 1
[11] => 1
[12] => 1
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.