站長資訊網
        最全最豐富的資訊網站

        PHP中如何讀取CSV內容并存入一個數組中

        如何使用PHP把CSV讀成一個數組?下面本篇文章帶大家了解一下使用PHP讀取CSV內容,并將其轉換成數組的方法,希望對大家有幫助。

        PHP中如何讀取CSV內容并存入一個數組中

        在這篇文章中,我將向你展示如何使用PHP的內置函數來讀取和打印一個CSV文件的內容,并將其轉換成一個數組。我們將使用fopen()fgetcsv() 讀取CSV文件的內容,然后使用array_map()str_getcsv() 函數將其轉換成數組。

        簡介

        以逗號分隔的數值(CSV)格式存儲數據文件并不是什么新鮮事。事實上,由于其簡單性,它是最常見的數據存儲方式之一–CSV文件易于讀寫,并且可以在基本的文本編輯器中打開。這種類型的文件以純文本的形式存儲表格數據。

        這樣一個文件的例子是這樣的。

        Elias,40,nurse Rehema,15,programmer Beatrice,23,doctor

        這個數據代表了三個人的信息,有對應于他們名字、年齡和工作的列。雖然這是一種簡單的數據格式,但它的閱讀和消費是很棘手的。

        因此,在這篇文章中,我將教你如何使用PHP的原生函數(如fopen() )打開CSV文件,如何使用fgetcsv() 方法讀取這個文件的內容,最后是如何使用array_map() 函數將這個CSV文件轉換成一個數組。

        當然,我們可以使用一些第三方軟件包來實現這些,但PHP內置的本地函數非常好用。

        前提條件

        要繼續學習這篇文章,你需要以下條件。

        • 在你的機器上安裝了 PHP 5.6 或更高的版本
        • 一個PHP的開發環境–XAMPP或WampServer都很好用
        • 對PHP概念的一些基本了解

        我們開始吧!

        將CSV文件顯示為一個表

        在文章的這一部分,我們將讀取一個簡單的CSV文件,其中包含幾個由逗號分隔的詞。開始時,我們將使用上面的簡單文件,以后我們可以繼續使用一個隨機的大文件。當然,你可以使用Microsoft Excel或文本編輯器創建自己的文件,并以CSV為擴展名保存。

        要讀取該文件,我們首先要在其保存的文件夾或位置找到它。為了方便訪問,你可能想把它保存在你的程序文件的同一個文件夾里。然后我們可以使用fopen() 函數來讀取該文件。

        之后,fgetcsv() 函數從打開文件的解析行中檢查CSV字段。這個函數需要三個參數:從fopen() 返回的文件句柄,要讀取的行的最大長度,以及特殊的分隔符–我們稱之為 "分隔符"。這可以是一個逗號、一個分號或任何其他分隔符。

        現在讓我們來實際操作一下。

        在可以用WAMP或XAMPP提供服務的地方創建一個名為csvtable.php的文件,并復制以下代碼。

        <?php  $file_to_read = fopen('data.csv', 'r');  if($file_to_read !== FALSE){          echo "<table>n";     while(($data = fgetcsv($file_to_read, 100, ',')) !== FALSE){         echo "<tr>";         for($i = 0; $i < count($data); $i++) {             echo "<td>".$data[$i]."</td>";         }         echo "</tr>n";     }     echo "</table>n";      fclose($file_to_read); }  ?>

        在這個文件中,我們首先打開data.csv文件,它應該包含一些逗號分隔的數據。fopen 將在與csvtable.php相同的文件夾中尋找這個文件。'r' 參數告訴fopen ,以只讀方式打開該文件。

        如果文件被成功打開,fopen 將返回一個文件句柄,可用于其他文件的讀取操作。否則,它將返回FALSE 。因此,在繼續讀取文件之前,我們檢查文件句柄是否為FALSE

        然后,fgetcsv() 文件從打開的文件中獲取CSV字段,一次一行。我們告訴fgetcsv ,每行最多讀取100個字符,并使用逗號分隔符作為分隔符。然后,在文件中找到的字被循環瀏覽,并打印到一個HTML表格中。

        最后一個函數是fclose() ,它關閉了打開的文件。這將釋放打開的文件所使用的內存,并允許其他進程訪問該文件。

        通過WAMP或XAMPP localhost服務器打開csvtable**.php**,或從命令行運行php read.php ,可以看到以下輸出。

        PHP中如何讀取CSV內容并存入一個數組中

        我們需要實現的第一部分已經完成了!

        現在,我們將跳到將原始CSV字段轉換為數組。

        將原始CSV文件轉換為數組

        現在,有不止一種方法來產生數組。我們可以使用fgetcsv() 函數將CSV文件的內容自動轉換為數組,或者我們可以使用array_map

        使用fgetcsv() ,將CSV文件轉換成數組

        這與上面的例子類似,我們使用fgetcsv() ,將一個CSV文件渲染成一個HTML表格。讓我們來看看這個動作。創建一個具有以下內容的PHP文件。

        <?php function csvToArray($csvFile){      $file_to_read = fopen($csvFile, 'r');      while (!feof($file_to_read) ) {         $lines[] = fgetcsv($file_to_read, 1000, ',');      }      fclose($file_to_read);     return $lines; }  //read the csv file into an array $csvFile = 'data.csv'; $csv = csvToArray($csvFile);  //render the array with print_r echo '<pre>'; print_r($csv); echo '</pre>'; ?>

        在上面的代碼中,我們創建了一個函數來讀取一個CSV文件并將其轉換為數組。我們傳入一個參數,包含CSV文件的名稱和路徑。

        然后,我們使用feof() 函數來檢查是否已經到達文件的末端。在到達之前,我們需要使用fgetcsv() 函數解析CSV字段,就像我們在上面的例子中做的那樣。

        使用fgetcsv() 函數將CSV文件中被解析的CSV字段轉換為數組,并將其逐一追加到$lines[] 變量中。

        最后,別忘了在退出函數之前,使用fclose() 函數關閉已打開的文件。

        然后,我們調用readDocument 函數,該函數將CSV文件作為參數傳遞,接下來,CSV文件的內容將顯示如下。

        PHP中如何讀取CSV內容并存入一個數組中

        使用array_map() 讀取一個CSV文件

        另外,你也可以使用array_map() 函數將一個CSV文件讀入一個數組。要做到這一點,你要使用str_getcsv 作為回調函數。這是一個內置的PHP函數,用來解析一個CSV字符串到一個數組中。

        回調函數是一些可執行的代碼,它作為一個參數傳遞給另一段代碼。這個參數預計在以后會被傳遞給它的代碼回調。

        下面是我們如何使用array_mapstr_getcsv ,將我們的CSV數據映射成一個數組。

        <?php $csv = array_map('str_getcsv', file('data.csv')); echo '<pre>'; print_r($csv); echo '</pre>'; ?>

        上面的代碼使用file() 方法將CSV文件讀成一個行數組。然后,通過數組映射,它在每一行上調用str_getcsv() ,并將整個文件的數據存儲在$csvstr_getcsv() 函數將每一行的CSV字段內容解析為一個數組。

        上述代碼片斷的輸出將與上述相同。

        注意到在直接使用file()array_map() 函數時,需要的代碼少了很多嗎?

        總結

        在這篇文章中,你學到了如何在PHP中處理一個CSV文件,通過使用PHP本地函數如fopen()fgetcsv() 讀取和顯示其內容,并將CSV字段轉換為數組。我向你展示了兩種方法。

        現在,試著自己做吧。編碼愉快!

        相關文章推薦:php文件操作系列大匯總(持續更新~)

        推薦學習:《PHP視頻教程》、《PHP ARRAY》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲国产精品不卡毛片a在线| 国产精品青草久久久久福利99| 你懂的国产精品| 真实国产精品vr专区| 国产亚洲精品影视在线产品| 国产精品久久久久影视不卡| 老司机性色福利精品视频| 无码精品第一页| 国产精品无码久久久久| 亚洲国产精品久久久久久| 国产最新进精品视频| 中文字幕日本精品一区二区三区| 久久91精品国产91久久麻豆 | 国产成人亚洲精品青草天美| 国产精品二区观看| 久久精品国产免费| aaa级精品久久久国产片| 青青草原精品国产亚洲av| 四库影院永久四虎精品国产 | 九色精品视频在线观看| 四虎精品成人免费观看| 97久久精品午夜一区二区| 精品无人区一区二区三区| 无码人妻精品中文字幕| 亚洲精品无码成人片在线观看| 久久精品国产亚洲Aⅴ蜜臀色欲 | 国产精品多人p群无码| 精品无码国产污污污免费网站| 亚洲高清专区日韩精品| 四虎永久在线精品免费一区二区| 精品无码专区亚洲| 国产三级精品三级| 国产精品亚洲w码日韩中文| 国产精品高清在线观看| 国产精品伦理久久久久久| 99免费精品国产| www亚洲欲色成人久久精品| 99久久精品免费观看国产| 国产成人精品曰本亚洲79ren| 国产精品二区观看| 国产精品欧美一区二区三区|