请问下unlink怎么循环删除数组里面的文件并且把这个文件的路径(包含文件名)及大小打印到屏幕上?
让用户能够看到删除过程。
$dir = 'dbbak';
function read($dir)
{
$dirInfo = glob($dir . "/*");
foreach($dirInfo as $info)
{
$file[] = $info;
if ( is_dir($info) || $file !="." || $file != ".." )
{
read($info);
} }
if($file != null )
{
$f = array();
$time = array();
$size = array();
$ftime = array_map('filemtime',$file);
$fsize = array_map('filesize',$file);
array_push($time,$ftime);
array_push($size,$fsize);
$arr["time"] = $time;
$arr["size"] = $size;
$arr["name"] = $file;
if($arr["name"])
{
unlink($arr["name"]);
}
}
}
让用户能够看到删除过程。
$dir = 'dbbak';
function read($dir)
{
$dirInfo = glob($dir . "/*");
foreach($dirInfo as $info)
{
$file[] = $info;
if ( is_dir($info) || $file !="." || $file != ".." )
{
read($info);
} }
if($file != null )
{
$f = array();
$time = array();
$size = array();
$ftime = array_map('filemtime',$file);
$fsize = array_map('filesize',$file);
array_push($time,$ftime);
array_push($size,$fsize);
$arr["time"] = $time;
$arr["size"] = $size;
$arr["name"] = $file;
if($arr["name"])
{
unlink($arr["name"]);
}
}
}
能麻烦您说具体点么?
我需要的是动态显示当前正在删除的文件名、如果直接用echo的话会把所有的都打出来
function undir($dir)
{
$dir = realpath($dir);
$files = glob($dir.'/*');
foreach($files as $file){
if( is_file($file) ){
// unlink 删除操作
echo "{$file}已经被删除了\n";
}else if( is_dir($file) ){
undir($file);
}
}
}
undir("/www/hello");
我现在是这么弄得、删除的时候还是会把所有文件打出来、难道打出后一条记录的时候前一条记录在页面上的内容不会清空么?$dir = 'dbbak';
function read($dir)
{
$dirInfo = glob($dir . "/*");
foreach($dirInfo as $info)
{
$file[] = $info;
if ( is_dir($info) || $file !="." || $file != ".." )
{
read($info);
} }
if($file != null )
{
$f = array();
$time = array();
$size = array();
$ftime = array_map('filemtime',$file);
$fsize = array_map('filesize',$file);
array_push($time,$ftime);
array_push($size,$fsize);
$arr["time"] = $time;
$arr["size"] = $size;
$arr["name"] = $file;foreach($arr["name"] as $value){
if(!is_dir($value))
{
unlink($value);
print $value.'</br>';
}
}
}
if ( is_dir($info) || $file !="." || $file != ".." )
就不合逻辑,如果是文件,那么也会进入该分支先改了再说
为嘛我看不出来问题啊
如果is_dir($info)条件为真、代表他是一个目录、循环一次
有嘛问题呢?
于是陷入死循环你可能要说不是还有 $file !="." 和 $file != ".." 吗?
但是遗憾的是你前面有 $file[] = $info;,在这种情况下 $file 只能是 'Array'也就是说
$file !="." 和 $file != ".." 总是成立的,于是连真正的文件也要进入 read($info);这还不是问题吗?即便你把 $file 改成 $info
if ( is_dir($info) || $info !="." || $info != ".." )
因为你使用的是 或 关系
任何一个文件名都将满足 $info !="." || $info != ".."是说说看,这还不是问题吗?只有这样才是正确的递归入口
if ( is_dir($info) && $info !="." && $info != ".." )