我是想遍历$dir下的所有文件,并将结果返回给一个数组,结果是一个多维数组,然后在遍历这个多维数组,将这个多维数组转换成一个一维数组,可是转换成功后,renturn的时候返回的值竟然返回不了了。代码如下:
<?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){
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); //在这里还可以输出$new_array数组中的数据,并且已经转换成为一维数组
return $new_array;
}
$dir=$_GET['dir'];
$s_array = get_all_files($dir);
echo is_array($s_array)?'true':'false'; //这里输出true,说明get_all_files成功返回了。
$g_array=array_tree($s_array);
echo is_array($g_array)?'true':'false'; //到这里就输出false,想不明白$new_array的数据为什么没有返回print_r($g_array);?>