ホームページ  >  記事  >  php教程  >  PHP 無制限の分類、出力ツリー図をサポート

PHP 無制限の分類、出力ツリー図をサポート

WBOY
WBOYオリジナル
2016-06-21 08:49:291104ブラウズ

array('id'=>'1','parentid'=>0,'name'=>'第 1 レベル列 1'), * 2 => array('id'=>'2','parentid'=>0,'name'=>'第 1 レベルの列 2'), * 3 => array('id'=>'3','parentid'=>1,'name'=>'第 2 レベルの列 1'), * 4 => array('id'=>'4','parentid'=>1,'name'=>'第 2 レベルの列 2'), * 5 => array('id'=>'5','parentid'=>2,'name'=>'第 2 レベルの列 3'), * 6 => array('id'=>'6','parentid'=>3,'name'=>'第 3 レベルの列 1'), * 7 => array('id'=>7','parentid'=>3,'name'=>'第 3 レベルの列 2') *)*/ 関数ツリー($arr=array()) { $this->arr = $arr; $this->ret = ''; is_array($arr)を返します; } /*** 親配列を取得します * @param int * @return 配列*/ 関数 get_parent($myid) { $newarr = 配列(); if(!isset($this->arr[$myid])) は false を返します。 $pid = $this->arr[$myid]['parentid']; $pid = $this->arr[$pid]['parentid']; if(is_array($this->arr)) { foreach($this->arr as $id => $a) { if($a['parentid'] == $pid) $newarr[$id] = $a; } } $newarr を返します。 } /*** 子配列を取得します * @param int * @return 配列*/ 関数 get_child($myid) { $a = $newarr = array(); if(is_array($this->arr)) { foreach($this->arr as $id => $a) { if($a['parentid'] == $myid) $newarr[$id] = $a; } } $newarr を返しますか? $newarr : false; } /*** 現在位置の配列を取得します * @param int * @return 配列*/ 関数 get_pos($myid,&$newarr) { $a = 配列(); if(!isset($this->arr[$myid])) は false を返します。 $newarr[] = $this->arr[$myid]; $pid = $this->arr[$myid]['parentid']; if(isset($this->arr[$pid])) { $this->get_pos($pid,$newarr); } if(is_array($newarr)) { krsort($newarr); foreach($newarr として $v) { $a[$v['id']] = $v; } } $a を返します。 } /***------------------------------------------------------------ * ツリー構造を取得します *------------------------------------------------------------ * @著者 Midnight(楊雲州)、yangyunzhou@foxmail.com * @param $myid は、この ID の下にあるすべての子を取得することを意味します * @param $str ツリー構造の基本コードを生成します。例: "" * @param $sid 選択された ID (ツリー ドロップダウン ボックスを作成するときに必要など) * @param $adds * @param $str_group * @return 不明なタイプ*/ 関数 get_tree($myid, $str, $sid = 0, $adds = '', $str_group = '') { $番号=1; $child = $this->get_child($myid); if(is_array($child)) { $total = count($child); foreach($child as $id=>$a) { $j=$k=''; if($number==$total) { $j .= $this->icon[2]; } それ以外 { $j .= $this->icon[1]; $k = $adds ? $this->icon[0] : ''; } $spacer = $adds ? $adds.$j : ''; $selected = $id==$sid ? '選択済み' : ''; @extract($a); $parentid == 0 && $str_group ? eval("$nstr = "$str_group";") : eval("$nstr = "$str";"); $this->ret .= $nstr; $this->get_tree($id, $str, $sid, $adds.$k.' ',$str_group); $number++; } } $this->ret; を返す } /***前の方法と似ていますが、複数選択が可能です*/ 関数 get_tree_multi($myid, $str, $sid = 0, $adds = '') { $番号=1; $child = $this->get_child($myid); if(is_array($child)) { $total = count($child); foreach($child as $id=>$a) { $j=$k=''; if($number==$total) { $j .= $this->icon[2]; } それ以外 { $j .= $this->icon[1]; $k = $adds ? $this->icon[0] : ''; }$spacer = $adds ? $adds.$j : ''; $selected = $this->have($sid,$id) ? '選択済み' : ''; // $sid.'=>'.$id.' をエコーし​​ます。 : '.$選択されました。' 。
; @extract($a); eval("$nstr = "$str";"); $this->ret .= $nstr; $this->get_tree_multi($id, $str, $sid, $adds.$k.' '); $number++; } } $this->ret; を返す } 関数 have($list,$item){ return(strpos(',,'.$list.',',','.$item.',')); } } ?>



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。