项目开发中免不了要在服务器上创建文件夹,比如上传图片时的目录,模板解析时的目录等。这不当前手下的项目就用到了这个,于是总结了几个循环创建目录的方法。
方法一:使用glob循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php
//方法一:使用glob循环
function myscandir1( $path , & $arr ) {
foreach ( glob ( $path ) as $file ) {
if ( is_dir ( $file )) {
myscandir1( $file . '/*' , $arr );
} else {
$arr [] = realpath ( $file );
}
}
}
?>
|
方法二:使用dir && read循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
//方法二:使用dir && read循环
function myscandir2( $path , & $arr ) {
$dir_handle = dir( $path );
while (( $file = $dir_handle ->read()) !== false) {
$p = realpath ( $path . '/' . $file );
if ( $file != "." && $file != ".." ) {
$arr [] = $p ;
}
if ( is_dir ( $p ) && $file != "." && $file != ".." ) {
myscandir2( $p , $arr );
}
}
}
?>
|
方法三:使用opendir && readdir循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
//方法三:使用opendir && readdir循环
function myscandir3( $path , & $arr ) {
$dir_handle = opendir( $path );
while (( $file = readdir( $dir_handle )) !== false) {
$p = realpath ( $path . '/' . $file );
if ( $file != "." && $file != ".." ) {
$arr [] = $p ;
}
if ( is_dir ( $p ) && $file != "." && $file != ".." ) {
myscandir3( $p , $arr );
}
}
}
?>
|
方法四:使用scandir循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
//方法四:使用scandir循环
function myscandir4( $path , & $arr ) {
$dir_handle = scandir( $path );
foreach ( $dir_handle as $file ) {
$p = realpath ( $path . '/' . $file );
if ( $file != "." && $file != ".." ) {
$arr [] = $p ;
}
if ( is_dir ( $p ) && $file != "." && $file != ".." ) {
myscandir4( $p , $arr );
}
}
}
?>
|
方法五:使用SPL循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
//方法五:使用SPL循环
function myscandir5( $path , & $arr ) {
$iterator = new DirectoryIterator( $path );
foreach ( $iterator as $fileinfo ) {
$file = $fileinfo ->getFilename();
$p = realpath ( $path . '/' . $file );
if (! $fileinfo ->isDot()) {
$arr [] = $p ;
}
if ( $fileinfo ->isDir() && ! $fileinfo ->isDot()) {
myscandir5( $p , $arr );
}
}
}
?>
|
可以用xdebug测试运行时间
1
2
3
4
5
6
7
8
9
10
11
|
<?php
myscandir1( './Code' , $arr1 ); //0.164010047913
myscandir2( './Code' , $arr2 ); //0.243014097214
myscandir3( './Code' , $arr3 ); //0.233012914658
myscandir4( './Code' , $arr4 ); //0.240014076233
myscandir5( './Code' , $arr5 ); //0.329999923706
//需要安装xdebug
echo xdebug_time_index(), "\n" ;
?>
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。