亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 API 響應導出為 CSV

將 API 響應導出為 CSV

PHP
一只萌萌小番薯 2023-03-04 10:46:48
我需要將我的 API 響應導出到 CSV 文件中?,F在,我可以導出它并且輸出似乎循環(在我的 API 響應中有 8 個狀態交付的項目)。當我檢查我的 CSV 文件時,包含 5 行具有相似的輸出,其中只有最后一個傳遞狀態的數據。我的錯誤在哪里,有人可以幫忙嗎?:/API 請求的 CSV: - Tracking #,Order #,Unique ID - AB74832493,0dajKDhsa,478324 - CD78437294,kDHIdsan98,768542API響應:Array(    [status] => delivered    [last_trace] => 2020-04-21 13:10:00 : Shipment Delivered    [last_action_date_time] => 2020-04-21 13:10:12)Array(    [status] => delivered    [last_trace] => 2020-02-29 12:55:00 : Shipment Delivered    [last_action_date_time] => 2020-02-29 12:55:51)控制器:public function getstatusbyid()    {    $csv_file = file('C:\wamp64\www\testing\application\csv\packet.csv');    $csv_data = [];    foreach ($csv_file as $line) {        $csv_data[] = str_getcsv($line);    }    $order_no = json_encode(array_column($csv_data, '0'));    $tracking = json_encode(array_column($csv_data, '1'));    $unique_id = array_column($csv_data, '2');    $access_key = 'SOMETHING';    foreach ($unique_id as $i => $id) {        $url = "https://track.my/api/getstatus/$id";        $data = array(            'unique_id'       => $id,            'access_key'      => $access_key        );        $data_string = json_encode($data);        $curl = curl_init();        curl_setopt($curl, CURLOPT_URL, $url);        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);        curl_setopt($curl, CURLOPT_TIMEOUT, 15);        $result = curl_exec($curl);        curl_close($curl);        $resultinfo = json_decode($result, true);        echo '<pre>';        print_r($resultinfo);        $status = $resultinfo["status"];        $date = $resultinfo["last_action_date_time"];        $resultdata = array();        if ($status == 'delivered') {            foreach ($resultinfo as $item) {                $resultdata[] = array(                    'status'    => $status,                    'date'      => $date                );            }
查看完整描述

1 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

問題是您反復重新打開(并重新創建)CSV 文件。您可以將 'w' 更改為 'a' 以附加,或者甚至更好:將調用移至fopen()外部fclose(),foreach ($unique_id as $i => $id) {這樣您就不會每次都重復重新打開文件。


當你這樣做的時候,你還應該檢查fopen()失敗。


public function getstatusbyid()

    {


    $csv_file = file('C:\wamp64\www\testing\application\csv\packet.csv');

    $csv_data = [];

    foreach ($csv_file as $line) {

        $csv_data[] = str_getcsv($line);

    }


    $order_no = json_encode(array_column($csv_data, '0'));

    $tracking = json_encode(array_column($csv_data, '1'));

    $unique_id = array_column($csv_data, '2');

    $access_key = 'SOMETHING';


    if ( FALSE === ( $fp = fopen('C:\wamp64\www\testing\application\csv\track.csv', 'w') ) ) {

        die( "Error opening CSV file." ); // TO DO: handle this better

    }


    foreach ($unique_id as $i => $id) {

        $url = "https://track.my/api/getstatus/$id";


        $data = array(

            'unique_id'       => $id,

            'access_key'      => $access_key

        );


        $data_string = json_encode($data);


        $curl = curl_init();

        curl_setopt($curl, CURLOPT_URL, $url);

        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

        curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($curl, CURLOPT_TIMEOUT, 15);


        $result = curl_exec($curl);


        curl_close($curl);


        $resultinfo = json_decode($result, true);

        echo '<pre>';

        print_r($resultinfo);


        $status = $resultinfo["status"];

        $date = $resultinfo["last_action_date_time"];


        $resultdata = array();

        if ($status == 'delivered') {

            foreach ($resultinfo as $item) {


                $resultdata[] = array(

                    'status'    => $status,

                    'date'      => $date

                );

            }


            foreach ($resultdata as $fields) {

                fputcsv($fp, $fields);

            }


        }

    }


    fclose($fp);

}


查看完整回答
反對 回復 2023-03-04
  • 1 回答
  • 0 關注
  • 136 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號