今天小編給大家分享的是php生成文件層級樹類的方法。小編覺得挺實用的,為此分享給大家做個參考。一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)是專業(yè)的牟定網(wǎng)站建設公司,牟定接單;提供成都網(wǎng)站設計、網(wǎng)站制作,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行牟定網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
根據(jù) 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;
}
//獲取帶格式數(shù)組
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 . ' ';
$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 . ' ');
$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;
}
//數(shù)組轉換
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']]的二維數(shù)組
$data = $tree->arrshift($data);
$tree->set_tree($data);
$data = $tree->getArray();
foreach ($data as $value) {
echo $value['name'];
echo '<br/>';
echo '<br/>';
}上文描述的就是php生成文件層級樹類的方法,具體使用情況還需要大家自己動手實驗使用過才能領會。如果想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁標題:php生成文件層級樹類
本文地址:http://chinadenli.net/article34/gphjpe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、搜索引擎優(yōu)化、用戶體驗、App設計、微信小程序、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)