请问下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"]);
         }
    }
}

解决方案 »

  1.   


    能麻烦您说具体点么?
     我需要的是动态显示当前正在删除的文件名、如果直接用echo的话会把所有的都打出来
      

  2.   

    你的代码似乎有点错误 $file[] = $info; $file是数组类型的
    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");
      

  3.   


    我现在是这么弄得、删除的时候还是会把所有文件打出来、难道打出后一条记录的时候前一条记录在页面上的内容不会清空么?$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>';
        }
      }
    }
      

  4.   

    首先
    if ( is_dir($info) || $file !="." || $file != ".." )
    就不合逻辑,如果是文件,那么也会进入该分支先改了再说
      

  5.   


    为嘛我看不出来问题啊
    如果is_dir($info)条件为真、代表他是一个目录、循环一次
    有嘛问题呢? 
      

  6.   

    . 和 .. 都是目录,所以 is_dir($info) 会成立,而递归进入 read($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 != ".." )