用func_get_args()和func_get_arg()可以变通的支持重载

解决方案 »

  1.   

    首先你这不是重载,而是递归
    其次if(false!==is_dir($file) getdir($file);
                               ^这里少了一个“)”
      

  2.   

    让各位见笑了,呵呵
    我把重载和递归弄错了
    function getdir($dirpath)
    {
    $dst=dir($dirpath);
    while (false !== ($file=$dst->read()))
    {
    echo $file."<br>";
    if(is_dir($file)==false)
    echo $file;
    if(is_dir($file)==true) 
    echo " " ."|<br>--" .$file;
    getdir($file);
    }
    }
    $dirpath="d:/";
    echo $dirpath;
    getdir($dirpath);
    不明白为什么这样写代码无法全部显示d:/下的内容,只能显示一个目录名
    如果把递归函数内的getdir($file)给删了,就可以正确显示
    如果是目录的话echo " " ."|<br>--" .$file应该执行这个语句
    可是没执行~~~
      

  3.   

    修改了一下,注意不同的地方
    <?php
    function getdir($dirpath) {
      $dst=dir($dirpath);
      while ($file=$dst->read()) {
        if(is_dir($dirpath."/".$file)) {
          echo "$file [DIR]<br>";
          if($file[0] != ".")
            getdir($dirpath."/".$file);
        }else
          echo $file."<br>";
      }
    }
    $dirpath="d:/";
    echo $dirpath;
    getdir($dirpath);
    ?>
      

  4.   

    echo "$file [DIR]<br>";
    能给我解释一下这句话吗?""之中的不是字符串吗?
    怎么可以当变量显示,且其中的[DIR]什么意思?
      

  5.   

    echo "$file [DIR]<br>";
    当变量出现在""中时,php会转换出他的值,这样的写法较
    echo $file." [DIR]<br>";
    显得清晰点。另外[DIR]只是表示该项为子目录,没有其他的意义。因为你是在做目录列表,能指示出何为文件何为子目录总是应该的吧?