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

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

Jun 21, 2016 am 08:49 AM
array gt this

ログイン後にコピー

<?php /*** 任意のツリー構造を生成できるユニバーサルツリークラス*/ クラスツリー { /**※ツリー構造生成に必要な2次元配列を生成 * @var 配列*/ var $arr = 配列(); /**※ツリー構造生成に必要な修正記号を画像に置き換えることができます * @var 配列*/ var $icon = array('│','§','└'); /*** @アクセス非公開*/ var $ret = ''; /*** コンストラクター、クラスを初期化します * @param array 2 次元配列、例: * 配列( * 1 => 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 ツリー構造の基本コードを生成します。例: "<option value=$id $select>$spacer$name</option>" * @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.' をエコーし​​ます。 : '.$選択されました。' 。 <br/>; @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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

Huawei GT3 ProとGT4の違いは何ですか?

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

修正: Windows 11 で Snipping ツールが機能しない

iPhoneでApp Storeに接続できないエラーを修正する方法 iPhoneでApp Storeに接続できないエラーを修正する方法 Jul 29, 2023 am 08:22 AM

iPhoneでApp Storeに接続できないエラーを修正する方法

C# の Array.Sort 関数を使用して配列を並べ替える C# の Array.Sort 関数を使用して配列を並べ替える Nov 18, 2023 am 10:37 AM

C# の Array.Sort 関数を使用して配列を並べ替える

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决

PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 Jun 27, 2023 pm 01:48 PM

PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法

PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 Jun 26, 2023 pm 01:41 PM

PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法

PHPのarray_fill()関数の使い方の詳しい説明 PHPのarray_fill()関数の使い方の詳しい説明 Jun 27, 2023 am 08:42 AM

PHPのarray_fill()関数の使い方の詳しい説明

See all articles