日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

Php xml 目录,PHP-PHP+xml的无限分类树目录的方法?

發布時間:2023/12/4 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Php xml 目录,PHP-PHP+xml的无限分类树目录的方法? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

無限分類樹的代碼有很多,下面是個示例:

/**

by lenush;

*/

class Tree

{

var $data = array();

var $child = array(-1=>array());

var $layer = array(-1=>-1);

var $parent = array();

function Tree ($value)

{

$this->setNode(0, -1, $value);

} // end func

function setNode ($id, $parent, $value)

{

$parent = $parent?$parent:0;

$this->data[$id] = $value;

$this->child[$id] = array();

$this->child[$parent][] = $id;

$this->parent[$id] = $parent;

if (!isset($this->layer[$parent]))

{

$this->layer[$id] = 0;

}

else

{

$this->layer[$id] = $this->layer[$parent] + 1;

}

} // end func

function getList (&$tree, $root= 0)

{

foreach ($this->child[$root] as $key=>$id)

{

$tree[] = $id;

if ($this->child[$id]) $this->getList($tree, $id);

}

} // end func

function getValue ($id)

{

return $this->data[$id];

} // end func

function getLayer ($id, $space = false)

{

return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];

} // end func

function getParent ($id)

{

return $this->parent[$id];

} // end func

function getParents ($id)

{

while ($this->parent[$id] != -1)

{

$id = $parent[$this->layer[$id]] = $this->parent[$id];

}

ksort($parent);

reset($parent);

return $parent;

} // end func

function getChild ($id)

{

return $this->child[$id];

} // end func

function getChilds ($id = 0)

{

$child = array($id);

$this->getList($child, $id);

return $child;

} // end func

} // end class

//new Tree(根目錄的名字);

//根目錄的ID自動分配為0

$Tree = new Tree('目錄導航');

//setNode(目錄ID,上級ID,目錄名字);

$Tree->setNode(1, 0, '目錄1');

$Tree->setNode(2, 1, '目錄2');

$Tree->setNode(3, 0, '目錄3');

$Tree->setNode(4, 3, '目錄3.1');

$Tree->setNode(5, 3, '目錄3.2');

$Tree->setNode(6, 3, '目錄3.3');

$Tree->setNode(7, 2, '目錄2.1');

$Tree->setNode(8, 2, '目錄2.2');

$Tree->setNode(9, 2, '目錄2.3');

$Tree->setNode(10, 6, '目錄3.3.1');

$Tree->setNode(11, 6, '目錄3.3.2');

$Tree->setNode(12, 6, '目錄3.3.3');

//getChilds(指定目錄ID);

//取得指定目錄下級目錄.如果沒有指定目錄就由根目錄開始

$category = $Tree->getChilds();

//遍歷輸出

foreach ($category as $key=>$id)

{

echo $Tree->getLayer($id, '|-').$Tree->getValue($id)."
n";

}

?>

你的需求中需要從xml文件讀取組裝成菜單,但是不知道你的xml結構,因此提高一個簡單的xml解析方法,可以結合上面的程序使用。

$data = implode("",file('menu.xml'));

$parser = xml_parser_create();

xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);

xml_parse_into_struct($parser, $data, $xml_array, $tags);

xml_parser_free($parser);

$showMe = xmlToArr($xml_array);

echo "

";

print_r ($showMe);

echo "

";

function xmlToArr($xml_array,&$index=0,$start=0){

$num = count($xml_array);

$result = array();

for ($i = $start; $i < $num; $i++){

if ('open' == $xml_array[$i]['type']){

$start = $i+1;

$result[$xml_array[$i]['attributes']['ID']] = xmlToArr($xml_array,$index,$start);

$i = $index;

}else if ('close' == $xml_array[$i]['type']){

$index = $i;

return $result;

}else if ('complete' == $xml_array[$i]['type']){

$result[$xml_array[$i]['attributes']['ID']] = null;

}

}

return $result;

}

?>

總結

以上是生活随笔為你收集整理的Php xml 目录,PHP-PHP+xml的无限分类树目录的方法?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。