本文目錄一覽:
- 1、php關於遞歸創建練級目錄,為什麼少輸出一個目錄
- 2、php上傳文件,創建遞歸目錄的實例代碼
- 3、php如何實現遞歸遍歷文件目錄
- 4、怎麼在php中創建一個遞歸創建目錄的封裝函數
- 5、關於php遞歸函數創建級聯目錄的困惑
- 6、php遞歸獲取目錄內文件封裝類分享
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);
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;
}
?
php如何實現遞歸遍歷文件目錄
只需要一個遞歸函數:
function Folders($folder) {
if (!is_dir($folder)) return false;
foreach (scandir($folder) AS $f) {
if ($f == ‘.’ or $f == ‘..’) continue;
echo $f, ‘hr/’;
Folders($folder . ‘/’ . $f); // 遞歸調用
}
}
Folders(‘Test’);
怎麼在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這類的教學視頻哦⊙∀⊙!,你可以去看看
關於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遞歸獲取目錄內文件封裝類分享
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))
{
$file
.
‘br
/’;
}
elseif
(is_dir($file))
{
readFileFromDir($file);
}
}
}
調用方式:
代碼如下:
$dir
=
‘/home/www/test’;
readFileFromDir($dir);
查看php手冊的話,還有一個方法scandir也可以使用,不過這個方法會一次性獲取單級目錄下的所有文件,存放到數組裡,如果目錄里的文件比較多的話,會卡。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/308450.html