在上一篇文章中我們介紹了又給大家介紹了一種一次性讀取整個文件的方法,並且該方法可以將讀取到時內容存入一個字符串中,感興趣的可以點擊《php如何將檔案全部資料存入一個字串中》檢視。以下繼續介紹一次性讀取整個文件的方法。
上篇文章中的方法,會在一行輸出檔案的全部內容,檔案資料少還好,如果檔案資料太多,例如:
#使用file_get_contents()函數來讀取輸出:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filestr = file_get_contents($file); echo $filestr; ?>
輸出結果為
#可以看出這樣輸出的內容不利於閱讀了。那麼怎麼做可以逐行輸出文件全部內容呢?可以藉助數組。
可以先一次讀取整個文件,並將資料逐行存入數組,每一行資料對應一個數組元素即可。
我們來看看下面的程式碼:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filearr = file($file,FILE_IGNORE_NEW_LINES); var_dump($filearr); ?>
輸出結果:
#是不是便於閱讀了,有時需要讀取全部內容,但暫時只需要其中的一行數據,就可以使用數組名[下標]
的形式來取指定行的數據。例如想要第三行的數據,那麼可以:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filearr = file($file,FILE_IGNORE_NEW_LINES); echo $filearr[2]; //数组下标是从0开始的 ?>
輸出結果:
#下面我們來了解裡面的關鍵函數file()。
file($filename,$flags,$context)
函數接受一個必要參數$filename
(要讀取的檔案),兩個可省略的參數$flags
和$context
(檔案句柄的環境)。
但一般還是會設定$flags
參數的,該參數可以是以下一個或多個常數:
FILE_USE_INCLUDE_PATH
:在include_path (在php.ini 中)中尋找文件,預設為FALSE;如果想,則設定參數值為'1'。
FILE_IGNORE_NEW_LINES
:在陣列每個元素的結尾不要加上換行符號;
FILE_SKIP_EMPTY_LINES
:跳過空白行。
例如上例,如果省略“FILE_IGNORE_NEW_LINES”,輸出會是這樣的:
而如果一個檔案包含空行:
使用上例中的程式碼讀取文件,輸出結果為:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filearr = file($file,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES); var_dump($filearr); ?>輸出結果為:
$flags參數若設定多個常數值,則需要使用
|分隔。
以上是php怎麼逐行將整個文件資料存入陣列中的詳細內容。更多資訊請關注PHP中文網其他相關文章!