Экспорт формата CSV с многомерным массивом - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь экспортировать многомерный массив в формат 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);
}

Я получаю сообщение об ошибке

1 Ответ

0 голосов
/ 14 января 2020
$orders = $result->data->orders;
                if(empty($orders))
                {
                    $request->session()->flash('message', 'No records');
                    return back();
                }
                header('Content-Type: text/csv;');
                header('Content-Disposition: attachment; filename=orders.csv');
                header("Pragma: no-cache");
                header("Expires: 0");
                $fh = fopen('php://output', 'w');
                fputcsv($fh, array('Order Id','First Name','Last Name','Email','Amount','Transaction Id','Last Four','Total Paid'));
                foreach ($orders as $order) {
                    $order_data = array($order->id);
                    array_push($order_data, $order->first_name);
                    array_push($order_data, $order->last_name);
                    array_push($order_data, $order->email);
                        foreach ($order->order1 as $order) {
                            $order1 = array($order);
                            for($i = 0; $i < count($order1); $i++) {
                           array_push($order_data,$order1[$i]->amount);

                            }
                    array_push($order_data, $order->payment->trans_id);
                    array_push($order_data, $order->payment->last_four);
                    array_push($order_data, $order->payment->total_paid);
                        }
                    }
                    fputcsv($fh, $order_data);
                }

Этот код исправляет мою проблему

...