使用多维数组导出 CSV 格式

我正在尝试使用以下代码将多维数组导出为 CSV 格式,但我遇到的错误很少.. 下面是数组


 "orders": [

            {

                "id": 1,

                "first_name": “test",

                "last_name": “test",

                "email": “test@test.gmail.com",

                “Order1": [

                    {

                      "order_id": 1,

                        "first_name": “test",

                        "last_name": “test",

                        “Amount": 27.77

                    }

                ],

                "payment": {

                    "id": 1,

                    "trans_id": 12345,

                    "last_four": “1111",

                    "total_paid": 27.77

                }

            },

            {

                "id": 2,

                "first_name": “test1",

                "last_name": “test1",

                "email": “test1@test.gmail.com",

                “Order1": [

                    {

                      "order_id": 2,

                        "first_name": “test1",

                        "last_name": “test1",

                        “Amount": 28.77

                    }

                ],

                "payment": {

                    "id": 1,

                    "trans_id": 12346,

                    "last_four": “2222",

                    "total_paid": 28.77

                }

             }

           ]

我期待的 csv 文件的输出



1 test test test@gmail.com 1 test test 27.77 12345 1111 27.77

2 test1 test1 test1@gmail.com 2 test1 test1 28.77 12346 2222 28.77


我想将所有数据转换为 csv 文件。问题是,由于所有子数组,我似乎无法让它工作。


header('Content-Type: text/csv;');

                header('Content-Disposition: attachment; filename=order.csv');

                header("Pragma: no-cache");

                header("Expires: 0");

                $fh = fopen('php://output', 'w');

                fputcsv($fh, array_keys($orders[0]));

foreach ($orders as $order) {

    $result = [];

    array_walk_recursive($order, function($item) use (&$result) {

        $result[] = $item;

    });

    fputcsv($fh, $result);

}

我对此有错误


一只萌萌小番薯
浏览 149回答 1
1回答

慕田峪9158850

$orders = $result->data->orders;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(empty($orders))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $request->session()->flash('message', 'No records');&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return back();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; header('Content-Type: text/csv;');&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; header('Content-Disposition: attachment; filename=orders.csv');&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; header("Pragma: no-cache");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; header("Expires: 0");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $fh = fopen('php://output', 'w');&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fputcsv($fh, array('Order Id','First Name','Last Name','Email','Amount','Transaction Id','Last Four','Total Paid'));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach ($orders as $order) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $order_data = array($order->id);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push($order_data, $order->first_name);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push($order_data, $order->last_name);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push($order_data, $order->email);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach ($order->order1 as $order) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $order1 = array($order);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for($i = 0; $i < count($order1); $i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;array_push($order_data,$order1[$i]->amount);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push($order_data, $order->payment->trans_id);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push($order_data, $order->payment->last_four);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push($order_data, $order->payment->total_paid);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fputcsv($fh, $order_data);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }此代码解决了我的问题
打开App,查看更多内容
随时随地看视频慕课网APP