導航:首頁 > 編程語言 > php創建目錄遞歸

php創建目錄遞歸

發布時間:2023-01-11 13:16:15

1. 如何在php網站根目錄下建立自己想要的目錄

不建議這么做,首先如果這么做的話,你的用戶一多,就會在根目錄下生成太多的子目錄,影響FTP管理。建議你可以用user1_文件名 的方式保存上傳的文件。也可以用日期歸類來生成目錄。

2. PHP 如何遞歸演算法

一般來說,類似這種遍歷輸出所有文件,大多採用遞歸演算法,這樣程序顯得比較簡潔,其實際執行效率來說,並不見得比其他方法更好。

以下是示例:

function file_list($path)
{
if ($handle = opendir($path))//打開路徑成功
{
while (false !== ($file = readdir($handle)))//循環讀取目錄中的文件名並賦值給$file
{
if ($file != "." && $file != "..")//排除當前路徑和前一路徑
{
if (is_dir($path."/".$file))
{
// echo $path.": ".$file."<br>";//去掉此行顯示的是所有的非目錄文件
file_list($path."/".$file);
}
else
{
echo $path.": ".$file."<br>";
}
}
}
}
}

3. php創建目錄的方法

mkdir

(PHP 4, PHP 5, PHP 7)

mkdir — 新建目錄

1.說明

mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = FALSE [, resource $context ]]] ) : bool

嘗試新建一個由 pathname 指定的目錄。

2.參數

pathname

目錄的路徑。

mode

默認的 mode 是 0777,意味著最大可能的訪問權。有關 mode 的更多信息請閱讀 chmod() 頁面。

Note:

mode 在 Windows 下被忽略。

注意也許想用八進制數指定模式,也就是說該數應以零打頭。模式也會被當前的 umask 修改,可以用 umask() 來改變。

recursive

允許遞歸創建由 pathname 所指定的多級嵌套目錄。

context

Note: 在 PHP 5.0.0 中增加了對上下文(Context)的支持。有關上下文(Context)的說明參見 Streams。

3.返回值

成功時返回 TRUE, 或者在失敗時返回 FALSE。

4.範例如下圖

5.錯誤/異常

目錄已存在時,產生 E_WARNING錯誤。

如果因為許可權問題無法創建目錄,導致 E_WARNING錯誤。

4. php 遞歸遍歷目錄代碼調試

文件系統中,"."代表此目錄自身,".."代表上級目錄。scandir取目錄時,也會把這這兩個特殊目錄取出來,但一般情況下不用處理,只需要處理正常目錄,所以要在if中排除掉。

5. 怎麼在php中創建一個遞歸創建目錄的封裝函數

:遞歸創建目錄,此種方法是我目前感覺比較好的方法。

function mkDirs($dir){ if(!is_dir($dir)){ if(!mkDirs(dirname($dir))){ return false; } if(!mkdir($dir,0777)){ return false; } } return true; } mkDirs('1/2/3/');我還是推薦你去後盾人看看,裡面有很對關於php這類的教學視頻哦⊙∀⊙!,你可以去看看

6. php遞歸獲取目錄內文件封裝類分享

php遞歸獲取目錄內文件封裝類分享,可以遞歸子目錄
代碼如下:

代碼如下:
function
readFileFromDir($dir)
{

if
(!is_dir($dir))
{

return
false;

}

//打開目錄

$handle
=
opendir($dir);

while
(($file
=
readdir($handle))
!==
false)
{

//排除掉當前目錄和上一個目錄

if
($file
==
"."
||
$file
==
"..")
{

continue;

}

$file
=
$dir
.
DIRECTORY_SEPARATOR
.
$file;

//如果是文件就列印出來,否則遞歸調用

if
(is_file($file))
{

print
$file
.
'<br
/>';

}
elseif
(is_dir($file))
{

readFileFromDir($file);

}

}
}

調用方式:

代碼如下:
$dir
=
'/home/www/test';
readFileFromDir($dir);

查看php手冊的話,還有一個方法scandir也可以使用,不過這個方法會一次性獲取單級目錄下的所有文件,存放到數組里,如果目錄里的文件比較多的話,會卡。

7. php如何實現遞歸遍歷文件目錄

只需要一個遞歸函數:

functionFolders($folder){
if(!is_dir($folder))returnfalse;

foreach(scandir($folder)AS$f){
if($f=='.'or$f=='..')continue;
echo$f,'<hr/>';
Folders($folder.'/'.$f);//遞歸調用
}

}


Folders('Test');

8. php關於遞歸創建練級目錄,為什麼少輸出一個目錄

if(!file_exists(dirname($path))){//判斷上一級目錄是否存在
//mkdir($path,0777,true);
//echo 'yes';
check(dirname($path));//當返回到./當前目錄時存在,那麼依次進行下一步創建文件夾操作
mkdir(dirname($path),0777);
}
改為
if(!file_exists(dirname($path))){//判斷上一級目錄是否存在
//mkdir($path,0777,true);
//echo 'yes';
check(dirname($path));//當返回到./當前目錄時存在,那麼依次進行下一步創建文件夾操作
}
mkdir(dirname($path),0777);

9. php上傳文件,創建遞歸目錄的實例代碼

復制代碼
代碼如下:
<?php
$uid=$_REQUEST['uid'];
$avatar
=
'D:/avic/discuz/uc_server/data/avatar/'.get_avatar($uid,
$size,
$type);
$dir=dirname($avatar);
//創建目錄成功後移動臨時文件
if(mkdirs($dir)){
if($_FILES["pic"]["error"]
>=
0){
if(move_uploaded_file($_FILES['pic']['tmp_name'],$avatar)){
$errorcode=1;
}else{
$errorcode=0;
$errormsg="文件移動失敗";
}
}else{
$errorcode=0;
$errormsg=$_FILES['pic']['error'];
}
}
$back=array("errorcode"=>$errorcode,'errormsg'=>$errormsg);
echo
json_encode($back);
//返回圖片要存儲的路徑
function
get_avatar($uid,
$size
=
'middle',
$type
=
'')
{
$size
=
in_array($size,
array('big',
'middle',
'small'))
?
$size
:
'middle';
$uid
=
abs(intval($uid));
$uid
=
sprintf("%09d",
$uid);
$dir1
=
substr($uid,
0,
3);
$dir2
=
substr($uid,
3,
2);
$dir3
=
substr($uid,
5,
2);
$typeadd
=
$type
==
'real'
?
'_real'
:
'';
return
$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid,
-2).$typeadd."_avatar_$size.jpg";
}
//遞歸創建目錄,若傳的$dir不是絕對路徑,則會和運行此方法的目錄同級
function
mkdirs($dir){
if(!is_dir($dir)){
if(!mkdirs(dirname($dir))){
return
false;
}
if(!mkdir($dir,0777)){
return
false;
}
}
return
true;
}
?>

10. 關於php遞歸函數創建級聯目錄的困惑

mkdir1剛進去就是判斷$dir存不存在,a/b/c/d/e說白了就是判斷有沒有e文件夾
如果沒有 繼續dirname($dir) 判斷a/b/c/d路徑的d文件夾有沒有
如果沒有 繼續dirname($dir) 判斷a/b/c路徑的c文件夾有沒有
依此類推直到
dirname($dir) 判斷a路徑的時候 不存在執行當前遞歸層的mkdir($dir) 創建a
存在則return,然後執行當前遞歸層上一級的mkdir($dir) 創建a/b
之後繼續上一級的mkdir($dir) 創建a/b/c
直到創建完a/b/c/d/e 遞歸結束

閱讀全文

與php創建目錄遞歸相關的資料

熱點內容
怎麼升級手機android 瀏覽:922
php權威編程pdf 瀏覽:994
扣扣加密技巧 瀏覽:720
蘋果如何創建伺服器錯誤 瀏覽:495
軟考初級程序員大題分值 瀏覽:473
js壓縮視頻文件 瀏覽:578
linux如何通過命令創建文件 瀏覽:989
應用加密app還能訪問應用嘛 瀏覽:433
安卓怎麼用支付寶交違章罰款 瀏覽:665
php面向對象的程序設計 瀏覽:504
數據挖掘演算法書籍推薦 瀏覽:894
投訴聯通用什麼app 瀏覽:150
web伺服器變更ip地址 瀏覽:954
java正則表達式驗證郵箱 瀏覽:361
成熟商務男裝下載什麼軟體app 瀏覽:609
加密2h代表長度是多少厘米 瀏覽:23
拍賣程序員 瀏覽:103
電腦的圖片放在哪個文件夾 瀏覽:276
unsignedintjava 瀏覽:218
編譯器下載地址 瀏覽:44