<?php
function get_all_files($dir){
if(is_dir($dir)){
$dir_handle = opendir($dir);
while(false !== ($file = readdir($dir_handle))){
if($file != '.' && $file != '..'){
$file_name1=str_replace('\\\\', '/',$dir)."/$file";
$file_name=str_replace('//','/',$file_name1);
if(is_dir($file_name)){
$file_tree[$file] = @get_all_files($file_name);
}
else{
$file_tree[] = $file_name;
}
}
}
closedir($dir_handle);
}
return $file_tree;
}function array_tree($array){
if(is_array($array)){
foreach($array as $key => $values){
$array[$key] = array_tree($values);
}
} else{
global $num;
$new_array[$num] = $array;
$num++;
}
//print_r($new_array); 在这里还可以显示的.
return $new_array;
}
$dir=$_GET['dir'];
$num = 0;
$s_array = get_all_files($dir);
$g_array=array_tree($s_array);
print_r($g_array);?>
在array_tree函数里面还可以print_r return之后就显示不出来了。

解决方案 »

  1.   

    是要这样的结果吗<?php
    function array_tree($array){
        static $new_array = array();
        static $num = 0;
        if(is_array($array)) {
            foreach($array as $key => $values){
                $array[$key] = array_tree($values);
            }
        } else {        //global $num;
            $new_array[$num] = $array;
            $num++;
        }
        //print_r($new_array); //在这里还可以显示的.
        return $new_array;
    }
    $s_array = array(1=>array(11,111,1111),2,3,4,5);
    $g_array=array_tree($s_array);
    print_r($g_array);?>
    Array
    (
        [0] => 11
        [1] => 111
        [2] => 1111
        [3] => 2
        [4] => 3
        [5] => 4
        [6] => 5
    )
      

  2.   

    我是想遍历dir 下的所有文件 ,遍历的结果是一个多维数组,然后再遍历这个多维数组,最后再遍历多维数组,并将多维数组重新生成一个一位数组$new_array
      

  3.   

    我是想遍历dir 下的所有文件 ,遍历的结果是一个多维数组,然后再遍历这个多维数组,并将多维数组重新生成一个一位数组$new_array