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