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

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

如何在PHP中整合csv文件中不同列的數據?

如何在PHP中整合csv文件中不同列的數據?

PHP
紫衣仙女 2023-07-08 17:36:32
我編寫了這段代碼,它讀取 csv 文件并將其與文件夾中的照片進行比較,并向我顯示比較結果,如下所示:A1101_90: Several imagesA1119_90: No image in the folderA1119_854: No image in the folderA1119_4023: No image in the folder....我想將它們放入 CSV 文件中,以便放在兩個不同的列上:A1101_90 | Several imagesA1119_90 |No image in the folderA1119_854 |No image in the folderA1119_4023 | No image in the folder....我嘗試使用 foreach 和 fputcsv 但它只顯示列表中的最后一項,我該如何更改它?<?phpecho '<pre>';$dataImage = [];$dataImageTmp = [];$path = $_POST['path'];$photos = scandir($path);$photos = array_map('strtoupper', $photos);if (($handle = fopen("../miniproducthub.csv", "r")) !== FALSE) {    fgets($handle); // skip header line        // Create CSV output file        $chemin = 'csv/photos.csv';         $delimiteur = ';';        $fichier_csv = fopen($chemin, 'w+');        fprintf($fichier_csv, chr(0xEF) . chr(0xBB) . chr(0xBF));    while (($data = fgetcsv($handle, 9000000, ";")) !== FALSE){        if ($data[0] != null) {            for ($i = 1; file_exists($fileName = $path.trim($data[6]).'_'.str_pad(trim($data[7]),4, "0", STR_PAD_LEFT).'-'.$i.'.JPG'); ++$i) {                if (!in_array($fileName, $dataImage)){                    $dataImage[$data[6] . '_' . $data[7]]['file'][$i] = $fileName;                    $fileName = str_replace($path, '', $fileName);                    if (!in_array($fileName, $dataImageTmp)){                        $dataImageTmp[] = $fileName;                    }                }                if (isset($dataImage[$data[6] . '_' . $data[7]]['TOTAL'])) {                    $dataImage[$data[6] . '_' . $data[7]]['TOTAL']++;                } else {                    $dataImage[$data[6] . '_' . $data[7]]['TOTAL'] = 1;                }            }              if ($i == 1)               {                     $resultat = [$data[6] . '_' . $data[7].' : No image in the folder'];                    print_r($data[6] . '_' . $data[7].' : No image in the folder'."\n");            }
查看完整描述

1 回答

?
喵喵時光機

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

當您的第一個循環運行時,它總是使用 覆蓋數據,一個簡單的解決方案是更改此設置以使用...$resultat = 添加項目[]


$resultat[] = [$data[6] . '_' . $data[7]];

你的輸出也應該是


fputcsv($fichier_csv, $result, $delimiteur);

如此$result與否$resultat,亦無<br>;


但就我個人而言,我會將數據寫入第一個循環內。


所以之后fgets()...


fgets($handle); // skip header line


// Create CSV output file

$chemin = 'csv/photos.csv'; 

$delimiteur = ';';


$fichier_csv = fopen($chemin, 'w+');

fprintf($fichier_csv, chr(0xEF) . chr(0xBB) . chr(0xBF));

在循環結束之前(在 close 內})...


fputcsv($fichier_csv, $resultat, $delimiteur);


查看完整回答
反對 回復 2023-07-08
  • 1 回答
  • 0 關注
  • 159 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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