1. 程式人生 > >PHP 陣列與CSV檔案互轉

PHP 陣列與CSV檔案互轉

專案說明

陣列匯出CSV,ZIP檔案,CSV,ZIP檔案還原陣列(Array export file,file restore array)適用於匯入匯出會員,商品資訊
注意讀取中文檔名檔案、資料時需要注意本地區域,設定 FetchFile 類中 fetchFile() 函式中 setlocale(LC_ALL, 'US')才可讀取到(中文)資料;
測試平臺為WIN,其他平臺未測試; 
如果不能讀取資料,請根據相應地區設定字元編碼,如果資料是字母與數字可以忽略(設定字元編碼問題)

資料轉碼編碼說明

  • PHP檔案編碼與網頁編碼$this->config[ 'webChar']
    一致都為UTF-8
  • 寫入檔案時,傳入的檔名(引數)編碼是UTF-8(PHP檔案編碼),將檔名轉換為$this->config[ 'fileNameChar'](GBK),否則中文檔名亂碼,資料資料編碼為傳入時原資料編碼UTF -8(PHP檔案編碼)
  • 讀取檔案時,判斷檔案是否存在,傳入的檔名(引數)編碼為UTF-8(PHP檔案編碼),中文檔名必須轉為$this->config['fileNameChar'](GBK)才能判斷
  • 讀取檔案資料時,原資料如果有中文,會出現亂碼,需要重新設定輸入輸出編碼為UTF-8(PHP檔案編碼,網頁編碼)
  • 讀取壓縮檔案中某個指定的檔案時(按照檔名讀取時),傳入的引數為UTF-8(PHP檔案編碼),寫入壓縮包時檔名為
    $this->config[ 'fileNameChar'](GBK);讀取壓縮包檔案(根據傳入的檔名讀取)資料時,檔名編碼必須一致,否則讀取不到資料

檔案說明

| --- datafile /匯出匯入檔案存放位置必須有建立,寫入,讀取許可權
| ---日誌/讀取檔案是錯誤日誌存放位置必須有建立,寫入許可權
| --- src / 
| - - dome.php示例檔案
| --- ExceData.php執行讀寫操作呼叫類檔案
| --- FetchFile.php讀取檔案操作類
| --- Pub.php讀寫操作基類
| --- WriteFile .php陣列寫入檔案(下載)類
| --- test /示例圖片

陣列資料匯出CSV / ZIP檔案

傳入陣列,如果限制每個檔案的資料條數小於陣列長度,自動生成壓縮檔案; 
如果限制每個檔案的資料條數大於陣列長度,根據引數設定是否壓縮檔案;

呼叫示例:
$exec=new ExecData(); $exec->writeData($two);;

共5個引數,第一個引數必填,其他引數可選

 * @param $ data陣列資料
 * @param $ tit csv檔案tit,arr或者'aa,bb'字串型別,建議陣列長度與資料每個二維資料長度一致
 * @param $ limit每個檔案資料條數
 * @param $ filename檔名,不加字尾,例如aa,生成的檔案是aa.csv /aa.zip;預設檔名WriteFile-> deFileName()函式定義
 * @param $ compr單個檔案是否壓縮,預設false不壓縮
 

CSV / ZIP檔案還原陣資料

讀取CSV檔案,返回陣列; 
如果讀取壓縮包中所有檔案如果沒有錯誤,獲取陣列後會自動刪除原始檔;如果有錯誤,會輸出提示資訊,可以通過修改FetchFIle類中的outLog()函式自定義處理錯誤資訊
讀取檔案壓縮包,壓縮包有多少個有內容的檔案,就返回幾個陣列FetchFile類中fetchFile函式輸出陣列
如果讀取整個檔案並且沒有錯誤,是否刪除原始檔可以通過配置FetchFile類中$this->config["isDelFile"]=false設定,預設不刪除,值為false
修改讀取檔案時錯誤日誌存放位置配置:
ExceData檔案fetchData()函式中$f_config['logFile']設定成自定義即可

呼叫示例:
$exec=new ExecData(); $exec->fetchData("compress2.csv");

共5個引數,第一個引數必填,其他引數可選

 * @param $ filename要讀取的檔名
 * @param bool是否返回檔案中的tit,預設false不返回;
 * @param bool是否將csv檔案中的tit做為陣列的key,預設false返回索引陣列
 * @param int / string
 * int讀取第幾個檔案的資料,預設0讀取所有檔案,如果壓縮檔案中只有一個檔案忽略此引數
 *如果$ index = 1,讀取第一個檔案;
 * string要讀取的檔名如果巢狀檔案請新增資料夾路徑例如aa / aa.csv,$ fileway引數必須為false
 * @param bool讀取壓縮包中檔案的方式預設索引,索引方式讀取,檔名讀取檔案false,此引數僅對壓縮檔案起作用
 

專案地址