1,'title'=>'first','pid'=>0,'level'=>1], ['id'=>2,'title'=>'second','pid'=>0,'level'=>1], ['id'=>3,'title'=>'third','pid'=>1,'level'=>2], ['id'=>4,'title'=>'fourth','pid'=>1,'level'=>2], ['id'=>5,'title'=>'fifth','pid'=>2,'level'=>2], ['id'=>6,'title'=>'sixth','pid'=>3,'level'=>3], ['id'=>7,'title'=>'seventh','pid'=>6,'level'=>4], ['id'=>8,'title'=>'seventh','pid'=>7,'level'=>5], ['id'=>9,'title'=>'seventh','pid'=>8,'level'=>6], ['id'=>10,'title'=>'seventh','pid'=>8,'level'=>6], ['id'=>11,'title'=>'seventh','pid'=>8,'level'=>6], ]; function tree($arr, $pid = 0, $level = 1){ $child = []; foreach($arr as $v){ // $child:孩子 $v:孩子的孩子 $childNodes:孩子的孩子的孩子,也就是说,在这个函数里,要处理子孙三代 if($v['pid'] == $pid){ // 得到子节点后递归得到子节点的子节点 $childNodes = tree($arr, $v['id'], $level + 1); // get childNodes's childNodes if($childNodes){ $v['child'] = $childNodes; $v['level'] = $level; } $child[] = $v; // $v is $child's child } } return $child; } $tree = tree($arr,0); function html($tree, $level = 0){ $str = ''; } html($tree); die; function file_tree($directory) { $mydir = dir($directory); echo "\n"; $mydir->close(); } function getChmod($filepath) { return substr(base_convert(@fileperms($filepath), 10, 8), -4); } $dirs = file_tree('/'); var_dump($dirs); var_dump(is_writable('/test')); $perms = getChmod('/test/'); var_dump(fileperms('/test')); var_dump(scandir('/')); var_dump($_SERVER['DOCUMENT_ROOT']); chdir('d:/www'); var_dump(scandir('/')); echo getcwd();