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

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

通過 PHP 數組對 CSV 數據進行排序

通過 PHP 數組對 CSV 數據進行排序

PHP
滄海一幻覺 2022-11-12 13:23:33
我正在嘗試從 .CSV 獲取數據,將其排序為數組(使用 PHP),在其中選擇特定值,從該選擇中創建一個新數組并將其編碼為可與 ajax 一起使用的 json 對象。有了這段代碼,我幾乎可以得到我想要的。$CSV_url = '../fichier-csv/commande.csv';                 // CSV file $csv["data"] = array_map('str_getcsv', file($CSV_url));   // to PHP arrayarray_shift($csv["data"]);                                // remove first line (headers)$jsonData = json_encode($csv);                            // to JsonCSV 文件每行包含大約 16 個類別的數據,但我在最終的 json 中只需要其中的 4 個。我堅持這個結果。如果我在 json_encode ( $csv) 之前打印,我會得到一個很好的數組,但是我很難選擇想要的數據并用它制作新數組(這是我認為應該這樣做的方式,但我是初學者,也許有一種更簡單的方法可以做到這一點)。輸出的 Json 也應該按照每個數組的 [0] 值的升序排序。這是我得到的數組的開始(其中 378 個要處理):Array (    [data] => Array        (            [0] => Array                (                    [0] => 100120148                    [1] => 1.0000                    [2] => 7.4200                    [3] => 2.4700                    [4] => 4.9100                    [5] => 0.0000                    [6] => 14.8000                    [7] => 0.3000                    [8] => marie                    [9] => jardin                    [10] => 40 rue mazé                    [11] => 87400                    [12] => 066825197                    [13] => [email protected]                    [14] => 1                    [15] => [email protected]                )            [1] => Array                (                    [0] => 100120162                    [1] => 1.0000                    [2] => 45.7500                    [3] => 10.8000                    [4] => 8.2500                    [5] => 0.0000                    [6] => 64.8000                    [7] => 2.0000                    [8] => __                    [9] => Lucien fizon                    [10] => 56 impasse pazarre                    [11] => 25000                    [12] => 0649851473                    [13] => [email protected]                    [14] => 4                    [15] => [email protected]                )如何獲取每個子數組的值 0、8、9 和 12 并用它創建一個新數組,以便我可以將這個所需的數組編碼為 Json ?
查看完整描述

2 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

在您讀取文件時處理它可能會更好,使用fopen()并且fgetcsv()您可以只提取您想要的項目到結果而不是全部存儲。


$CSV_url = '../fichier-csv/commande.csv';

$fh = fopen($CSV_url, "r");

$csv = [ "data" => [] ];

fgets($fh);             // Ignore header

while ( $row = fgetcsv($fh) )   {

    $csv["data"][] = [$row[0], $row[8], $row[9], $row[12]];

}

fclose($fh);

$jsonData = json_encode($csv);


查看完整回答
反對 回復 2022-11-12
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

您可以array_map再次使用以僅選擇每行中所需的列:


$csv["data"] = array_map(fn($row) => [$row[0], $row[8], $row[9], $row[12]], $csv["data"]);

如果您還沒有使用 PHP 7.4,則需要使用傳統語法而不是箭頭函數:


$csv["data"] = array_map(function(row) {

    return [$row[0], $row[8], $row[9], $row[12]];

}, $csv["data"];



查看完整回答
反對 回復 2022-11-12
  • 2 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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