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(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,此引數僅對壓縮檔案起作用