dousonghs58612 2014-11-13 06:30
浏览 68
已采纳

echo多维数组到csv

I have json array like bellow:

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.

  • 写回答

2条回答 默认 最新

  • dongxie9169 2014-11-13 06:39
    关注

    You can just use plain foreach in this case. As for the headers, you may need to use array_keys() for them. 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>
    

    Sample Output

    Printing in 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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)