日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码

發布時間:2023/12/19 php 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近對操作文件比較感興趣的說,所以咱們來把文件夾給遍歷了,順便生成個樹。

我們要使用的函數有 Scandir,它的作用是列出指定路徑中的文件和目錄,就像 Dir 一樣。

> 與更強力的 Glob() 函數,作用是以數組的形式返回與指定模式相匹配的文件名或目錄。

> 友情提醒,千萬別像小邪那樣在電腦前面呆太長時間,否則就會像小邪一樣得見鬼的高血糖。

一. 遍歷單層文件夾:

> 在掃描單層文件夾的問題是,兩個函數的結果雖有不同,不過表現是相差不大的。

> Scandir 函數會提供額外兩行,分別是 “.” 和 “..” ,而 Glob 則是沒有的。

function get_dir_scandir(){

$tree = array();

foreach(scandir('./') as $single){

echo $single."
\r\n";

}

}

get_dir_scandir();

function get_dir_glob(){

$tree = array();

foreach(glob('./*') as $single){

echo $single."
\r\n";

}

}

get_dir_glob();

二. 遞歸遍歷文件樹:

> 在遞歸掃描文件夾樹的問題上,還是 Glob 函數的表現好一點,很準確的說。

> Scandir 函數會莫名其妙掃描兩次 ../ 處的文件,也就是說如果小邪有倆文件。

> ../b.php 和 ../a.php,結果就會在掃描報告上面出現兩次,很是奇怪。

//Update at 2010.07.25 - 以下代碼作廢

$path = '..';

function get_filetree_scandir($path){

$tree = array();

foreach(scandir($path) as $single){

if(is_dir('../'.$single)){

$tree = array_merge($tree,get_filetree($single));

}

else{

$tree[] = '../'.$single;

}

}

return $tree;

}

print_r(get_filetree_scandir($path));

//Update at 2010.07.25 - 以下為新代碼

$path = './';

function get_filetree_scandir($path){

$result = array();

$temp = array();

if (!is_dir($path)||!is_readable($path)) return null; //檢測目錄有效性

$allfiles = scandir($path); //獲取目錄下所有文件與文件夾

foreach ($allfiles as $filename) { //遍歷一遍目錄下的文件與文件夾

if (in_array($filename,array('.','..'))) continue; //無視 . 與 ..

$fullname = $path.'/'.$filename; //得到完整文件路徑

if (is_dir($fullname)) { //是目錄的話繼續遞歸

$result[$filename] = get_filetree_scandir($fullname); //遞歸開始

}

else {

$temp[] = $filename; //如果是文件,就存入數組

}

}

foreach ($temp as $tmp) { //把臨時數組的內容存入保存結果的數組

$result[] = $tmp; //這樣可以讓文件夾排前面,文件在后面

}

return $result;

}

print_r(get_filetree_scandir($path));

> Glob 函數掃描灰常準確,并且會自動按照字母排好順序,貌似是最佳方案。

$path = '..';

function get_filetree($path){

$tree = array();

foreach(glob($path.'/*') as $single){

if(is_dir($single)){

$tree = array_merge($tree,get_filetree($single));

}

else{

$tree[] = $single;

}

}

return $tree;

}

print_r(get_filetree($path));

總結

以上是生活随笔為你收集整理的php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。