首頁 >後端開發 >php教程 >如何使用PHP處理CSV檔案?(程式碼範例)

如何使用PHP處理CSV檔案?(程式碼範例)

青灯夜游
青灯夜游原創
2019-02-13 10:31:575261瀏覽

在PHP中我們可以使用fgetcsv()函數來解析CSV文件,它可以自動解析給定資源中的CSV欄位。以下這篇文章就來給大家具體介紹一下使用PHP處理CSV檔案的方法,希望對大家有幫助。 【影片教學推薦:PHP教學

如何使用PHP處理CSV檔案?(程式碼範例)

什麼是CSV檔?

CSV檔案基本上只是一個符合特定格式的文字文件,一種用來儲存資料的純文字檔案格式,通常用於電子表格或資料庫軟體中。在CSV檔案中,所有數值都以逗號分隔(因此,首字母縮寫背後的含義:逗號分隔值),而各行則由換行符號分隔。

總結:CSV檔案由逗號、資料和換行符號組成;換行符號分隔行和逗號分隔值/列。

CSV檔案的範例,將其命名為example.csv:

Ted,USA,21
Lisa,UK,23
Michael,USA,20
Louise,Ireland,30

可以看出:每一行都用逗號分隔開;第一列是人的姓名,第二列是人的國家,最後一列是人的年齡;每個人都被換行符號分隔。

如何使用PHP處理CSV檔案?

php解析CSV檔案可以使用fgetcsv()函數;函數從開啟的檔案中解析一行,校驗 CSV 欄位。

語法如下

fgetcsv("filename.csv", 1000, ",");

filename.csv:CSV檔案的名稱。

1000:表示最長線的長度。

“,”:表示可選的分隔符號參數。預設當然是逗號(,)。

為了使用fgetcsv()函數,我們需要先用fopen()函數開啟檔案進行讀取,然後再用fclose()函數關閉檔案來結束程式碼。在兩者之間,我們使用一個循環,分別解析CSV每一行。

下面就來簡單介紹一下如何處理:

1、用fopen()函數開啟檔案並進行閱讀:

$h = fopen("filename.csv", "r");

使用「r 」模式開啟檔案並進行讀取;變數$h會從檔案中儲存資料的處理。

2、使用fgetcsv()函數逐行讀取CSV檔案的數據,並將每一行資料單獨儲存到名為$ data的陣列中。

$data = fgetcsv($h, 1000, ",");

為了讀取所有行,我們需要使用while循環:

while (($data = fgetcsv($h, 1000, ",")) !== FALSE) 
{
  // 读取数据
}

3、需要關閉該檔案

fclose($h);

結合上面的3個步驟:

<?php
// 打开文件并阅读
if (($h = fopen("example.csv", "r")) !== FALSE) 
{
  // 将每行数据都转换为本地$data变量并储存
  while (($data = fgetcsv($h, 1000, ",")) !== FALSE) 
  {
   //输出每行数据
    var_dump($data);
  }
  // 关闭文件
  fclose($h);
}
?>

輸出:

如何使用PHP處理CSV檔案?(程式碼範例)

程式碼範例:將CSV檔案轉換為PHP多維數組

以下程式碼產生一個多維數組( $ the_big_array),其每個項目都由一個從CSV檔案中的單行轉換而來的陣列組成。

<?php 
$filename = &#39;example.csv&#39;;
// 用于保存所有数据的多维(嵌套)数组
$the_big_array = []; 
// 打开文件并阅读
if (($h = fopen("{$filename}", "r")) !== FALSE) 
{
  // 文件中的每一行数据都被转换为我们调用的单个数组$data
  // 数组的每个元素以逗号分隔
  while (($data = fgetcsv($h, 1000, ",")) !== FALSE) 
  {
    // 每个单独的数组都被存入到嵌套的数组中
    $the_big_array[] = $data;
  }
  // 关闭文件
  fclose($h);
}
// 以可读格式显示代码
echo "<pre class="brush:php;toolbar:false">";
var_dump($the_big_array);
echo "
"; ?>

#輸出:

如何使用PHP處理CSV檔案?(程式碼範例)

以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是如何使用PHP處理CSV檔案?(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn