1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
function rec_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) )
{while ( ($file = readdir($handle)) !== false )
{if (substr($file,1,1)!=".")
{if ( is_dir($dir . "/" . $file) )
{$files[$file] = rec_scandir($dir . "/" . $file);}
else {$files[] = $file;}
}
}
closedir($handle);
return $files;
}
}
function cmp($a, $b)
{
if ( is_string($a) && is_string($b) ) {return strcmp($a, $b) > 0 ? 1 : -1;}
elseif ( is_int($a) && is_int($b) ) {return $a > $b ? 1 : -1;}
elseif ( is_int($a) && is_string($b) ) {return 1;}
elseif ( is_string($a) && is_int($b) ) {return -1;}
else {return 0;}
}
function array_ukmultisort(&$arr, $func)
{
uksort($arr, $func);
while ( list($key, $val) = each($arr) )
{if ( is_array($val) )
{array_ukmultisort($arr[$key], $func);}
}
}
function myprint_r($array, $prefix="", $offset="") {
for($i=0; $i<count($array); $i++) {
if (!is_int(key($array[$i]))) {
echo $offset.'<a href="'.$prefix.$array[$i].'" target="_self">'.$array[$i].'</a>';
} else {
echo $offset.'<a href="'.$prefix.key($array[$i]).'" target="_self">'.key($array[$i]).'</a>';
myprint_r($array[$i],$prefix.key($array[$i])."/",$offset." ");
}
}
$dir = rec_scandir(".");
array_ukmultisort($dir, "cmp");
echo "<pre>";
myprint_r($dir,"./");
echo "</pre>";
?>