分享一个生成文件层级树类
导读:收集整理的这篇文章主要介绍了分享一个生成文件层级树类,觉得挺不错的,现在分享给大家,也给大家做个参考。根据 php 递归读取文件夹生成文件树class Tree{ public $arr = array( ; public $i...
收集整理的这篇文章主要介绍了分享一个生成文件层级树类,觉得挺不错的,现在分享给大家,也给大家做个参考。根据 php 递归读取文件夹生成文件树
class Tree{
public $arr = array();
public $icon = array( '│', '├─', '└─' );
public $ret;
public function set_tree($arr = array()) {
$this->
arr = $arr;
}
public function get_child($myid) {
$newarr = array();
if (is_array($this->
arr)) {
foreach ($this->
arr as $id =>
$a) {
if ($a['pid'] == $myid) {
$newarr[$id] = $a;
}
}
}
return $newarr ? $newarr : false;
}
//获取带格式数组 public function getArray($myid = 0, $sid = 0, $adds = '') {
$number = 1;
$child = $this->
get_child($myid);
if (is_array($child)) {
$total = count($child);
foreach ($child as $a) {
$j = $k = '';
if ($number == $total) {
$j .= $this->
icon[2];
}
else {
$j .= $this->
icon[1];
$k = $adds ? $this->
icon[0] : '';
}
$spACER = $adds ? $adds . $j : '';
$a['name'] = $spacer . ' ' . $a['name'];
$this->
ret[] = $a;
$fd = $adds . $k . '&
nbsp;
&
nbsp;
&
nbsp;
';
$this->
getArray($a['id'], $sid, $fd);
$number++;
}
}
return $this->
ret;
}
//select public function get_tree($myid, $str, $sid = 0, $adds = '') {
$number = 1;
$child = $this->
get_child($myid);
if (is_array($child)) {
$total = count($child);
foreach ($child as $a) {
$id = $a['id'];
$j = $k = '';
if ($number == $total) {
$j .= $this->
icon [2];
}
else {
$j .= $this->
icon [1];
$k = $adds ? $this->
icon [0] : '';
}
$spacer = $adds ? $adds . $j : '';
$select = $id == $sid ? 'selected' : '';
$this->
ret .= sPRintf($str, $id, $select, $spacer, $a['name']);
$this->
get_tree($id, $str, $sid, $adds . $k . '&
nbsp;
');
$number++;
}
}
return $this->
ret;
}
//文件夹目录 public function read_all_dir($dir, $onlyDir = true, $ignore = []) {
$result = array();
$handle = opendir($dir);
if ($handle) {
while (($file = readdir($handle)) !== false) {
if (in_array($file, $ignore)) continue;
if ($file != '.' &
&
$file != '..') {
$cur_path = $dir . DIRECTORY_SEPARATOR . $file;
if (is_dir($cur_path)) {
$result[$file] = $this->
read_all_dir($cur_path, $onlyDir);
}
else {
if (!$onlyDir) {
$result[] = $file;
}
}
}
}
closedir($handle);
}
return $result;
}
//数组转换 public function arrshift($array, $pid = 0) {
static $r = [];
static $index = 1;
if (is_array($array) &
&
count($array) >
0) {
foreach ($array as $k =>
$v) {
$r[] = array( 'id' =>
$index, 'pid' =>
$pid, 'name' =>
is_array($v) ? $k : $v );
$index++;
$this->
arrshift($v, $index - 1);
}
}
return $r;
}
}
使用示例
$tree = new Tree ();
//文件夹遍历$data = $tree->
read_all_dir(realpath('../file_dir'), false, ['.gIT', '.idea', 'vendor']);
//转换成[['id','pid','name']]的二维数组$data = $tree->
arrshift($data);
$tree->
set_tree($data);
$data = $tree->
getArray();
foreach ($data as $value) {
echo $value['name'];
echo 'br/>
';
echo 'br/>
';
}
推荐教程:《PHP教程》
以上就是分享一个生成文件层级树类的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 分享一个生成文件层级树类
本文地址: https://pptw.com/jishu/596395.html
