PHP生成树
php生成一个树,可以用于产品分类
1. [图片] QQ截图20130225204020.jpg
2. [代码][PHP]代码
<?php class Tree { public $data=array(); public $cateArray=array(); public $res=array(); function Tree() { } function setNode ($id, $parent, $value) { $parent = $parent?$parent:0; $this->data[$id] = $value; //print_r($this->data); //echo "\r\n"; $this->cateArray[$id] = $parent; //节点数组 //print_r($this->cateArray); } function getChildsTree($id=0) { $childs=array(); foreach ($this->cateArray as $child=>$parent) { if ($parent==$id) { $childs[$child]=$this->getChildsTree($child); } } print_r($childs)."/r/n"; return $childs; } function getParentsTree($id=0) { $parents=array(); foreach ($this->cateArray as $child=>$parent) { if ($child ==$id) { $parents[$parent]=$this->getParentsTree($parent); } } print_r($parents)."/r/n"; return $parents; } function getChilds($id=0) { $childArray=array(); $childs=$this->getChild($id); foreach ($childs as $child) { $childArray[]=$child; $childArray=array_merge($childArray,$this->getChilds($child)); } return $childArray; } function getChild($id) { $childs=array(); foreach ($this->cateArray as $child=>$parent) { if ($parent==$id) { $childs[$child]=$child; } } return $childs; } function getParents($id) { $parentArray=array(); $parents=$this->getParent($id); foreach ($parents as $parent) { $parentArray[]=$parent; $parentArray=array_merge($parentArray,$this->getParents($parent)); } return $parentArray; } function getParent($id) { $parents=array(); foreach ($this->cateArray as $child=>$parent) { if ($child==$id) { $parents[$parent]=$parent; } } return $parents; } //单线获取父节点 function getNodeLever($id) { $parents=array(); if (key_exists($this->cateArray[$id],$this->cateArray)) { $parents[]=$this->cateArray[$id]; $parents=array_merge($parents,$this->getNodeLever($this->cateArray[$id])); } return $parents; } function getLayer($id,$preStr='|-') { return str_repeat($preStr,count($this->getNodeLever($id))); } function getValue ($id) { return $this->data[$id]; } // end func //获取所有节点数据生成树 function getAll($id=0,$str="|-"){ if($id!=0){ $str=$str."|-"; } //遍历所有数组检查parent是否有id foreach($this->cateArray as $child=>$parent){ //检查是否有相等的ID if($parent==$id){ $this->res[$child]=$str.$this->getValue($child); $this->getAll($child,$str); } //$this->res[$child]=$child.$str.$this->getValue($child); } } } //构造树 //setNode ($id, $parent, $value) $tree = new Tree(); $tree->setNode("1","","电器"); $tree->setNode("2","","服装"); $tree->setNode("3","1","电脑"); $tree->setNode("4","1","家电"); $tree->setNode("5","2","男装"); $tree->setNode("6","2","女装"); $tree->setNode("7","3","笔记本"); $tree->setNode("8","3","台式机"); $tree->setNode("9","7","惠普"); $tree->setNode("10","7","戴尔"); $tree->setNode("11","8","火星人"); $tree->setNode("12","5","西装"); $tree->setNode("13","6","上衣"); $tree->setNode("14","9","惠普-N90"); $tree->setNode("15","9","惠普-N91"); $tree->setNode("16","10","戴尔A11"); $tree->setNode("17","10","戴尔A12"); $tree->setNode("18","10","戴尔A13"); $tree->setNode("19","6","裤子 "); $tree->setNode("20","13","长袖"); $tree->setNode("21","13","短袖"); $tree->setNode("22","20","NIKE长袖"); $tree->setNode("23","20","361长袖"); $tree->setNode("24","22","NIKE长袖-均码"); $tree->setNode("25","22","NIKE长袖-短码"); $tree->setNode("26","14","惠普-N90-14寸"); $tree->setNode("27","14","惠普-N90-15寸"); $tree->setNode("28","14","惠普-N90-17寸"); $tree->setNode("29","28","惠普-N90-17寸-高性能企业版"); $tree->setNode("30","28","惠普-N90-17寸-普通家用版"); //获取一个节点的所有父节点 //print_r ($tree->getNodeLever(12)); //print_r ($tree->getParentsTree(12)); //$childs = $tree->getChildsTree(1); //print_r($childs); //echo "/r/n/r/n/r/n/r/n"; /* foreach($childs as $key=>$value){ echo $key."<br>"; //echo $tree->getLayer($key).$tree->getValue($key)."<br>"; } */ $tree->getAll(); foreach($tree->res as $val){ echo $val."<br>"; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>生成Tree</title> </head> <body> <h5>生成标签测试</5> <select> <?php foreach($tree->res as $key=>$val){ echo "<option value='{$key}'>{$val}</option>"; } ?> </select> </body> </html>
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
2週間前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
1週間前
By DDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
Atomfallのクレーンコントロールキーカードを見つける場所
1週間前
By DDD

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
