国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ php教程 php手冊 表表示無制限分類(PHP版)

表表示無制限分類(PHP版)

Jun 13, 2016 am 11:59 AM
php 分類 細(xì)胞 マージ そして 成し遂げる 階層 展示する 無制限 バージョン シート 合格

TreeTable は、セルの行と列を結(jié)合することで無限のレベルを?qū)g現(xiàn)し、階層構(gòu)造をより適切に表示できます。
1. ID/PID/NAME の配列を構(gòu)築し、後でデータベースによって生成された動的データを使用します。ツリー アルゴリズムの場合、

をクリックしてコード をコピーしてください。コードは次のとおりです。


array(
* 1) => array('id '=>1','parentid'=>0,'name'=>'第 1 レベルの列 1'),
* 2 => '=>'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')
* )


2. TreeTable クラスライブラリをインポートします。

コードをコピーします コードは次のとおりです。


import('@.ORG.Util.TableTree'); // Thinkphp インポート メソッド


3. TreeTable HTML コードを生成します

コードをコピーします コードは次のとおりです:


$treeTable->init($treearr);
echo $treeTable->get_treetable();


注: get_treetable() はテーブル本體部分のみを生成します。 ;TALBE> 獨(dú)自に作成してください。
完全なコード

コードをコピー コードは次のとおりです:


/**
* ファイル名: TreeTable.class.php
* 作成者: run.gao 312854458@qq.com 日付: 2012-07-24 23:22 GMT 8
* 説明: ユニバーサル テーブルの無制限の分類
**/
/**
* テーブル表示無制限分類は、ワイヤレス分類をテーブル形式で表示することで、分類の所屬をよりよく反映できます
* 使用方法:
* 1. 分類をインスタンス化します
* $ treeTable = new TreeTable();
* 2. 分類を初期化します。$treearr は多次元配列であり、id、parentid、name フィールドが含まれている必要があります
* $treeTable->init($treearr); >* 3. 無制限の分類 HTML コードを取得します
* echo $treeTable->get_treetable();
**/
class TreeTable {
/**
* ツリー構(gòu)造の生成に必要な 2 次元配列
* @var array
*/
public $arr = array();
/**
* テーブルの列數(shù)
* @var int
*/
public $columns = 0;
/**
* テーブルの行數(shù)
* @var int
*/
public $rows = 0;
/**
* TreeTable データを初期化します
* @param array 2 次元配列
* array(
* 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 => 配列 ('id'=>'5','parentid'=>2,'name'=>'第 2 レベルの列 3')、
* 6 => id'=>' 6','parentid'=>3,'name'=>'第 3 レベル列 1')、
* 7 => array('id'=> ','parentid'=> ;3,'name'=>'第 3 レベルの列 2')
* )
*/
public function init($arr=array()){
if(!is_array($arr)) return false;
foreach ($arr as $) k=>$v) {
$this->arr[$v['id']] = $v;
}
foreach ($this->arr as $k => ; $v){
$this->arr[$k]['column'] = $this->get_level($v['id']); // Y 軸の位置
$ this ->arr[$k]['arrchildid'] = $this->get_arrchildid($v['id']); // すべての子ノード
$this->arr[$k][ ' arrparentid'] = $this->get_arrparentid($v['id']); // すべての親ノード
$this->arr[$k]['child_bottom_num'] = $this->; get_child_count ($v['id']); // すべての基礎(chǔ)となる要素ノード
}
$this->columns = $this->get_columns(); // 行の総數(shù)
$ this-> ;rows = $this->get_rows(); // 列の総數(shù)
// arrparentid と ID 番號で並べ替えます
$this->sort_arr(); this->arr as $k => $v){
$this->arr[$k]['row'] = $this->get_row_location($v['id']); // X 軸の位置
$this->arr[$k]['rowspan'] = $v['child_bottom_num'] // 行マージの數(shù)
$this->arr[$k]; ]['colspan '] = $v['child_bottom_num'] == 0 ? $this->columns - $v['column'] 1 : 0; //結(jié)合された列の數(shù)
}
return $this->get_tree_arr();
}
/**
* 配列を取得
**/
public function get_tree_arr(){
return is_array($this->arr) ? >arr : false ;
}
/**
* arrparentid/id 番號で配列を並べ替えます
**/
public function sort_arr(){
// 並べ替えるフィールド
foreach ($this-> arr as $k = > $v){
$order_pid_arr[$k] = $v['arrparentid']
$order_iscost[] = $v['sort']; [$k] = $v['id'];
}
// まず arrparentid で並べ替え、次に ID 番號で並べ替えます
array_multisort(
$order_pid_arr, SORT_ASC, SORT_STRING,
$order_iscost, SORT_DESC, SORT_NUMERIC,
$order_id_arr, SORT_ASC, SORT_NUMERIC,
$this->arr)
// 各ノード レベルを取得します
for ($column = 1; $column <) ;= $this->columns; $column ) {
$row_level = 0;
foreach ($this->arr as $key => $node){
if ($node[ 'column '] == $column){
$row_level ;
$this->arr[$key]['column_level'] = $row_level;
}
//ID をキー名として再計(jì)算します
foreach ($this->arr as $k=>$v) {
$arr[$v['id']] = $v;
}
$this->arr = $arr;
}
/**
* 親配列を取得
* @param int
* @return array
*/
public function get_parent($myid){
$newarr = 配列( );
if(!isset($this->arr[$myid])) return false; > $pid = $this->arr[$pid]['parentid'];
if(is_array($this->arr)){
foreach($this->arr as $id) = > $a){
if($a['parentid'] == $pid) $newarr[$id] = $a>}
}
return $newarr; ?? >}
/**
* 子配列を取得します
* @param int
* @return array
*/
public function get_child($myid){
$a = $newarr = array();
if(is_array($this-> arr )){
foreach($this->arr as $id => $a){
if($a['parentid'] == $myid) $newarr[$id] = $ ;
}
}
$newarr : false;
/**
* 現(xiàn)在のノードのレベルを取得します
* @param $myid 現(xiàn)在のノード ID 番號
**/
public function get_level($myid, $init = true){
static $level = 1;
if($init) $level = 1;
if ($this->arr[$myid]['parentid']) {
$level ;
$this->get_level($this->gt;arr[$myid]['parentid'], false);
}
$level を返します。
}
/**
* 現(xiàn)在のノードのすべての基になるノード (子ノードのないノード) の數(shù)を取得します
* @param $myid ノード ID 番號
* @param $init 靜的変數(shù)が初めてロードされます
**/
public function get_child_count($myid, $init = true){
static $count = 0;
if($init) $count = 0;
if(!$this->get_child($myid) && $init) return 0;
if($childarr = $this->get_child($myid)){
foreach ($childarr as $v){
$this->get_child_count($v['id'],間違い);
}
}else{
$count ;
}
$count を返します。
}
/**
* ノードのすべての子ノードの ID 番號を取得します
* @param $catid ノード ID 番號
* @param $init 最初のロードでシチュエーションが靜的に初期化されます
**/
public function get_arrchildid($myid, $init = true) {
static $childid;
if($init) $childid = '';
if(!is_array($this->arr)) は false を返します。
foreach($this->arr as $id => $a){
if($a['parentid'] == $myid) {
$childid = $childid ? $childid.','.$a['id'] : $a['id'];
$this->get_arrchildid($a['id'], false);
}
}
$childid を返す ;
}
/**
* このノードのすべての親ノードの ID 番號を取得します
* @param $id ノード ID 番號
**/
public function get_arrparentid($id, $arrparentid = '') {
if(!is_array($this->arr)) return false ;
$parentid = $this->arr[$id]['parentid'];
if($parentid > 0) $arrparentid = $arrparentid ? $parentid.','.$arrparentid : $parentid;
if($parentid) $arrparentid = $this->get_arrparentid($parentid, $arrparentid);
$arrparentid を返す;
}
/**
* ノードの行位置を取得します
* @param $myid ノード ID 番號
*/
public function get_row_location($myid){
$nodearr = $this->arr;
// 獲取一節(jié)點(diǎn)が存在する行の位置
foreach ($nodearr as $key => $node){
if($myid == $node['id']) {
$node_row_count = 0;
$arrparentid =explode(',', $node['arrparentid']);
// すべての父節(jié)點(diǎn)が現(xiàn)在の節(jié)點(diǎn)層次の最下層節(jié)點(diǎn)より小さい元素
foreach ($arrparentid as $pid){
foreach ($nodearr as $node_row){
if($node_row ['column'] == $nodearr[$pid]['column'] && $nodearr[$pid]['column_level'] > $node_row['column_level'] && $node_row['child_bottom_num'] == 0 ){
$node_row_count ;
}
}
}
// すべての現(xiàn)在の節(jié)點(diǎn)および節(jié)點(diǎn)層次(rowid_level)は現(xiàn)在の節(jié)點(diǎn)層次の數(shù)より小さい
foreach ($nodearr as $node_row){
if( $node['column'] == $node_row['column'] && $node_row['column_level'] < $node['column_level']){
$node_row_count = $node_row['child_bottom_num'] ? $node_row['child_bottom_num'] : 1;
}
}
$node_row_count ;
休憩;
}
}
return $node_row_count;
}
/**
* テーブル內(nèi)の行數(shù)を取得します
**/
パブリック関數(shù) get_rows(){
$row = 0;
foreach ($this->arr as $key => $node){
if($node['child_bottom_num'] == 0){
$rows ; // 行數(shù)
}
}
return $rows;
}
/**
* テーブル內(nèi)の列の數(shù)を取得します
**/
パブリック関數(shù) get_columns(){
$columns = 0 ;
foreach ($this->arr as $key =>$node){
if($node['column'] > $columns){
$columns = $node['column ']; // 總列數(shù)
}
}
return $columns;
}
/**
* カテゴリのテーブル表示形式を取得(ヘッダーを除く)
**/
パブリック関數(shù) get_treetable(){
$table_string = '';
for($row = 1; $row rows; $row ){
$table_string .= "rt";
foreach ($this->arr as $v){
if($v['row'] == $row){
$rowspan = $v['rowspan'] ? "rowspan='{$v['rowspan']}'" : '';
$colspan = $v['colspan'] ? "colspan='{$v['colspan']}'" : '';
$table_string .= "rtt
{$v['name']}
";
}
}
$table_string .= "rt";
}
$table_string を返します。
}
}
?>

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中國語版

SublimeText3 中國語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? 最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? Jun 23, 2025 am 12:56 AM

postaycurrentwithpdevellyments andbest practices、follow keynewsourceslikephp.netandphpweekly、egagewithcommunitiessonforums andconferences、keeptooling and gradivallyadoptnewfeatures、andreadorcontributeTopensourceprijeprijeprijeptrijeprijeprests.

PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? Jun 23, 2025 am 12:55 AM

PhpBecamepopularforwebdevelopmentduetoitseaseaseaseaseasease、SeamlessintegrationWithhtml、widespreadhostingsupport、andalargeecosystemincludingframeworkelavelandcmsplatformslikewordspresspressinsinsionsisionsisionsisionsisionsionsionsisionsionsionsisionsisions

PHPタイムゾーンを設(shè)定する方法は? PHPタイムゾーンを設(shè)定する方法は? Jun 25, 2025 am 01:00 AM

tosettherighttimezoneInphp、usedate_default_timezone_set()functionthestthestofyourscriptwithavalididentifiersiersuchas'america/new_york'.1.usedate_default_timezone_set()beforeanydate/timefunctions.2.2.Altertentally、confuturethephp.inifilebyset.

PHPでのユーザー入力を検証して、特定の基準(zhǔn)を満たすことを確認(rèn)するにはどうすればよいですか? PHPでのユーザー入力を検証して、特定の基準(zhǔn)を満たすことを確認(rèn)するにはどうすればよいですか? Jun 22, 2025 am 01:00 AM

tovalidateuserinputinphp、usebuilt-validationfunctionslikefilter_var()andfilter_input()、applyRegularexpressionsforcustomformatsusususussusorphoneNumbers、checkdatatypesfornumerueSlikeageorpricepriceprice

PHP(serialize()、unserialize())のデータシリアル化とは何ですか? PHP(serialize()、unserialize())のデータシリアル化とは何ですか? Jun 22, 2025 am 01:03 AM

thephpfunctionSerialize()andunserialize()areusedtoconvertcomplexdatastructostorestorestorustorasandabackagain.1.serialize()c onvertsdatalikecarraysorobjectsraystringcontainingtainingtainingepeandStructureinformation.2。

HTMLファイルにPHPコードを埋め込むにはどうすればよいですか? HTMLファイルにPHPコードを埋め込むにはどうすればよいですか? Jun 22, 2025 am 01:00 AM

PHPコードをHTMLファイルに埋め込むことができますが、ファイルに.phpの拡張機(jī)能があることを確認(rèn)して、サーバーが正しく解析できるようにします。標(biāo)準(zhǔn)タグを使用してPHPコードをラップし、HTMLのどこにでも動的コンテンツを挿入します。さらに、同じファイルでPHPとHTMLを複數(shù)回切り替えて、條件付きレンダリングなどの動的関數(shù)を?qū)g現(xiàn)できます。短いラベル、引用マークエラー、または省略されたエンドラベルによって引き起こされる問題を回避するために、サーバーの構(gòu)成と構(gòu)文の正確性に注意してください。

クリーンで保守可能なPHPコードを書くためのベストプラクティスは何ですか? クリーンで保守可能なPHPコードを書くためのベストプラクティスは何ですか? Jun 24, 2025 am 12:53 AM

清潔で維持しやすいPHPコードを書くための鍵は、標(biāo)準(zhǔn)、合理的な構(gòu)造に従って、コメント、テスト能力を適切に利用する明確な命名にあります。 1。$ userDataやcalculatetotalprice()などの明確な変數(shù)、関數(shù)、クラス名を使用します。 2。PSR-12標(biāo)準(zhǔn)統(tǒng)一コードスタイルに従ってください。 3.責(zé)任に従ってコード構(gòu)造を分割し、MVCまたはLaravelスタイルのカタログを使用して整理します。 4.麺スタイルのコードを避け、単一の責(zé)任でロジックを小さな関數(shù)に分割します。 5.キーポイントにコメントを追加し、インターフェイスドキュメントを書き込み、パラメーター、返品値、例外を明確にします。 6.テスト可能性を改善し、依存関係を採用し、グローバルな狀態(tài)と靜的な方法を減らします。これらのプラクティスは、コードの品質(zhì)、コラボレーション効率、メンテナンス後の容易さを改善します。

See all articles