在php中,可以利用file()和array_slice()函數(shù)來讀取文件最后幾行數(shù)據(jù),實(shí)現(xiàn)代碼“array_slice(file($file,FILE_IGNORE_NEW_LINES),-行數(shù))”。
本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版、DELL G3電腦
php讀取文件最后幾行數(shù)據(jù)
實(shí)現(xiàn)思想:
-
借助file()函數(shù)將整個(gè)文件數(shù)據(jù)存入數(shù)組中,每一行數(shù)據(jù)對應(yīng)一個(gè)數(shù)組元素
-
借助array_slice()函數(shù)獲取數(shù)組中后幾個(gè)元素即可。
實(shí)現(xiàn)代碼:
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = 'test.txt'; $filearr = file($file,FILE_IGNORE_NEW_LINES); echo "文件的數(shù)據(jù):"; var_dump($filearr); echo "截取數(shù)組后2位的元素片段:"; $result = array_slice($filearr,-2); //截取數(shù)組后2位的元素 var_dump($result); ?>
輸出結(jié)果:
說明:
file()
函數(shù)會將文件的內(nèi)容按行存放到數(shù)組中(包括換行符在內(nèi))。如果成功則返回這個(gè)數(shù)組,失敗則返回 FALSE。file() 函數(shù)的語法格式如下:
file($filename,$flags,$context)
該函數(shù)接受一個(gè)必需參數(shù)$filename
(要讀取的文件),兩個(gè)可省略的參數(shù)$flags
和$context
(文件句柄的環(huán)境)。
但一般還是會設(shè)置$flags
參數(shù)的,該參數(shù)可以是以下一個(gè)或多個(gè)常量:
-
FILE_USE_INCLUDE_PATH
:在 include_path (在 php.ini 中)中查找文件,默認(rèn)為 FALSE;如果想,則設(shè)置參數(shù)值為 '1'。 -
FILE_IGNORE_NEW_LINES
:在數(shù)組每個(gè)元素的末尾不要添加換行符; -
FILE_SKIP_EMPTY_LINES
:跳過空行。
array_slice()
函數(shù)就是PHP提供的用來截取數(shù)組的一個(gè)函數(shù),可以從數(shù)組中提取出一個(gè)片段。語法如下:
array array_slice ( array $arr , int $start [, int $length = NULL [, bool $preserve_keys = false ]] )
參數(shù)說明:
- arr 表示要截取的數(shù)組。
- start 表示開始截取的位置(下標(biāo)):
- 如果 start 為正數(shù),則從前往后截取。
- 如果 start 為負(fù)數(shù),則從距離 arr 末端 -start 的位置開始,從后往前截取。例如 -2 意味著從數(shù)組的倒數(shù)第二個(gè)元素開始。
- length 是可選參數(shù),表示截取長度:
- 如果 length 為正數(shù),那么表示截取的元素個(gè)數(shù);
- 如果 length 為負(fù)數(shù),那么截取的片段將終止在距離數(shù)組末端 length 的位置;
- 如果省略,那么將從 start 位置開始,一直截取到數(shù)組的末尾。
- preserve_keys 是可選參數(shù),規(guī)定是否保留原來的鍵名,默認(rèn)為 false,也即不保留;如果設(shè)置為 true,將保留原有的鍵名。
推薦學(xué)習(xí):《PHP視頻教程》