您好,登錄后才能下訂單哦!
怎么在PHP中獲取目錄中的全部?jī)?nèi)容?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
$path = $argv[1]; // 獲取目錄下所有內(nèi)容 $dirs = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST); foreach($dirs as $k=>$d){ echo 'key:'. $k, PHP_EOL; if($d->isDir()){ echo $d->getPathname(), PHP_EOL; }else{ echo $d->getFilename(), PHP_EOL; } } //執(zhí)行 php PHP獲取目錄中的全部?jī)?nèi)容RecursiveDirectoryIterator.php ../ // key:../. // ../. // key:../.. // ../.. // key:../source // ../source // key:../source/. // ../source/. // key:../source/.. // ../source/.. // key:../source/PHP獲取目錄中的全部?jī)?nèi)容RecursiveDirectoryIterator.php // PHP獲取目錄中的全部?jī)?nèi)容RecursiveDirectoryIterator.php // key:../source/PHP大文件讀取操作.php // PHP大文件讀取操作.php // key:../PHP大文件讀取操作.md // PHP大文件讀取操作.md // key:../PHP獲取目錄中的全部?jī)?nèi)容RecursiveDirectoryIterator.md // PHP獲取目錄中的全部?jī)?nèi)容RecursiveDirectoryIterator.md
其實(shí)就一行代碼,然后直接循環(huán)輸出這個(gè)迭代器。從結(jié)果中我們可以看出,先進(jìn)入 source 目錄遍歷完成后再遍歷外部的文件內(nèi)容,按照目錄、文件名的順序依次獲取了目錄下的所有內(nèi)容。是不是比我們自己寫遞歸函數(shù)要方便很多。
如果我們想獲取目錄下的所有PHP文件,并且計(jì)算他們的文件總大小呢?使用這一套迭代器操作也可以非常簡(jiǎn)單的完成,我們只需要增加一個(gè)正則迭代器對(duì)前面的迭代器內(nèi)容進(jìn)行一下過濾就好了:
// 獲取所有php文件 $regIts = new RegexIterator($dirs, '/^.+\.php$/i'); $fileSize = 0; foreach($regIts as $k=>$p){ echo $p->getSize() . ' ' . $k, PHP_EOL; $fileSize += $p->getSize(); } echo 'Total ', $fileSize, PHP_EOL; // 622 ../source/PHP獲取目錄中的全部?jī)?nèi)容RecursiveDirectoryIterator.php // 869 ../source/PHP大文件讀取操作.php // Total 1491
感覺就和 ls -l 一樣,可以方便的讓我們能夠進(jìn)行目錄下的相關(guān)操作。這個(gè)類的使用就簡(jiǎn)單的介紹到這里,關(guān)于SPL庫(kù)中還有許多值得我們探索的能力,慢慢學(xué)習(xí)慢慢實(shí)踐,不斷提升我們面向優(yōu)雅編程的能力。
測(cè)試代碼:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202003/source/PHP%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%85%A8%E9%83%A8%E5%86%85%E5%AE%B9RecursiveDirectoryIterator.php
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。