在之前的文章《php怎么知道指定目錄中有哪些文件》中,我們使用PHP獲取指定目錄中文件(不包含子目錄)名稱的方法。這次我們來聊聊計算一個文件中有多少行數(shù)據(jù)的方法,有需要的可以參考參考。
我們有一個名為“test.txt”的文本文件,里面的內(nèi)容為:
我們可以看出該文件有10行數(shù)據(jù),那么如何使用PHP程序來進(jìn)行統(tǒng)計,計算出文件中有幾行數(shù)據(jù)呢?
今天我們就來給大家介紹兩種方法,首先是第一種方法:
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $i=0; $handle = fopen('./test.txt', 'r'); //打開文件 if (!$handle) { //判斷文件是否打開成功 echo '文件打開失??!'; } while (false !== ($char = fgets($handle,1024))) { //循環(huán)讀取文件內(nèi)容 $i++; } echo "文件中共有 ".$i." 行數(shù)據(jù)"; fclose($handle); //關(guān)閉文件 ?>
輸出結(jié)果:
分析:
-
fgets()函數(shù)可以逐行讀取文件,一次能讀取一行數(shù)據(jù)。
-
我們利用while循環(huán)和fgets()函數(shù)來讀取文件的全部數(shù)據(jù),然后使用一個計數(shù)器
$i
來統(tǒng)計讀取整個文件,fgets()函數(shù)一共操作了幾次即可。
利用while循環(huán)和fgets()函數(shù)的方法有點(diǎn)復(fù)雜,還需要打開和關(guān)閉文件。下面我們介紹一種更簡單的方法:
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = 'test.txt'; $filearr = file($file,FILE_IGNORE_NEW_LINES); $i = count($filearr); echo "文件中共有 ".$i." 行數(shù)據(jù)"; ?>
輸出結(jié)果:
分析:
file()函數(shù)可以一次性讀取整個文件,且會把整個文件讀入一個數(shù)組中,一行數(shù)據(jù)對應(yīng)一個數(shù)組元素【詳情可閱讀文章:《php怎么逐行將整個文件數(shù)據(jù)存入數(shù)組中》】。
我們使用var_dump()輸出上例的$filearr數(shù)組,可得到:
可以看出有10個數(shù)組元素,這10個數(shù)組元素就對應(yīng)文件有10行數(shù)據(jù)。
此時使用count($filearr)
來統(tǒng)計數(shù)組的長度(數(shù)組元素的個數(shù)),就可以獲取文件有幾行數(shù)據(jù)。
好了就說到這里了,有其他想知道的,可以點(diǎn)擊這個哦?!?→PHP文件基礎(chǔ)操作
推薦:《PHP面試題大匯總(收藏)》《php視頻教程》