無限分類の場合、PHP はインターフェイスを通じてすべての分類を抽出した後、分類ツリーを生成します。
Jun 13, 2016 pm 12:17 PM
無限分類の場合、PHP はインターフェイス
を介してすべてのカテゴリを抽出した後、分類ツリーを生成します。 アプリケーション シナリオ:
Web を通じて無制限の分類部門のデータを取得します。インターフェイス、部門 解析されるデータの形式は 2 次元配列です。キャッシュ機構(gòu)を追加せずに簡単な小さなフレームワークを一時的に作成したため、ページ上のすべての部門を一度に表示することしかできません。再帰的に実裝できますが、複雑すぎます。
解決策:
前提として、操作には再帰的メソッドを使用しますが、取得したデータに対して新しいメソッドを生成します。インターフェイスを介して 3 次元配列を作成し、再帰的な操作を?qū)g行するため、複雑さは比較的低くなります。 (もっと簡単な方法をご存知の方がいらっしゃいましたら、回答お願いします。)
実裝方法:
1. 渡されたデータの処理インターフェースによって取得されます。
/* * 將拉取到的部門數(shù)據(jù)處理成三維數(shù)組 * @param $dept array json解析出來的數(shù)組 * @return array * */function dept_enarray($dept = array()){ $dept_array = array(); foreach($dept as $key => $val){ if($val['parentno']){ $dept_array[$val['parentno']][0][] = $val; }else{ $dept_array[0][] = $val; } } return $dept_array;}
2. 処理された 3 次元配列に対して再帰演算を?qū)g行し、html を生成します。
/* * 構(gòu)建組織部門樹 * @param $orgdept array dept_enarray函數(shù)處理過的數(shù)組 * @param $html string html標簽內(nèi)容 * @param $lv int 當前的操作等級 * @param $parentarr array 擁有子部門的部門編碼 * @param $orgarr array 原始傳入的數(shù)組 * return string html * */function get_depttree($orgdept,$html = '',$lv=1, $parentarr = '', $orgarr = ''){ $vl = $lv; if(!$orgarr) $orgarr = $orgdept; if(!$parentarr && $lv == 1) $parentarr = array_keys($orgdept); foreach($orgdept[0] as $key=>$val){ if(!in_array($val['deptno'],$parentarr)) $disvisiable = ' class="disvisiable" '; else $disvisiable = ''; if($lv == 1 ){ $html .= '<dl> <dt class="f'.$val['parentno'].' father" data-deptid="'.$val['deptno'].'" status="close"> <em><img src="/public/images/list-close.png"'.$disvisiable.'> </em> <span>'.$val['name'].'</span> <div class="addmenu"> <ul> <li class="addson">添加子部門</li> <li class="adduser">添加成員</li> <li>編輯部門</li> <li class="deldept">刪除部門</li> </ul> </div> </dt>'; }else{ $html .= '<dd class="list'.($vl-1).' f'.$val['parentno'].' father" data-deptid="'.$val['deptno'].'" status="close"> <em><img src="/public/images/list-close.png"'.$disvisiable.'></em> <span>'.$val['name'].'</span> <div class="addmenu"> <ul> <li class="addson">添加子部門</li> <li class="adduser">添加成員</li> <li>編輯部門</li> <li class="deldept">刪除部門</li> </ul> </div> </dd>'; } if(in_array($val['deptno'], $parentarr)){ $html = get_depttree($orgarr[$val['deptno']],$html,++$vl,$parentarr,$orgarr); } if($lv == 1) $html .= '</dl>'; } return $html;}
最終的な HTML 効果は次のとおりです。
PS: 誰かがより良い解決策を持っている場合は、メッセージを殘してください。ありがとうございます。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

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

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

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

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

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質(zhì)はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質(zhì)はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結(jié)果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術(shù)知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

タイトル: Array.Sort 関數(shù)を使用して C# で配列を並べ替える例 本文: C# では、配列は一般的に使用されるデータ構(gòu)造であり、多くの場合、配列を並べ替える必要があります。 C# には Array クラスが用意されており、このクラスには配列を簡単に並べ替えるための Sort メソッドがあります。この記事では、C# で Array.Sort 関數(shù)を使用して配列を並べ替える方法を示し、具體的なコード例を示します。まず、Array.Sort 関數(shù)の基本的な使用法を理解する必要があります。 Array.So

PHP でプログラミングする場合、多くの場合、配列をマージする必要があります。 PHP には、配列のマージを完了するための array_merge() 関數(shù)が用意されていますが、配列內(nèi)に同じキーが存在する場合、この関數(shù)は元の値を上書きします。この問題を解決するために、PHP は配列をマージして同じキーの値を保持できる array_merge_recursive() 関數(shù)を言語で提供し、プログラム設計をより柔軟にします。配列マージ

PHP には、配列操作をより便利かつ高速にする強力な配列関數(shù)が多數(shù)あります。 2 つの配列を結(jié)合して連想配列にする必要がある場合、PHP の array_combine 関數(shù)を使用してこの操作を?qū)g行できます。この関數(shù)は、実際には、ある配列のキーを別の配列の値として新しい連想配列に結(jié)合するために使用されます。次に、PHP の array_combine 関數(shù)を使用して 2 つの配列を結(jié)合して連想配列にする方法を説明します。 array_comb について學ぶ

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します?!窤ppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

php提交表單通過后,彈出的對話框怎樣在當前頁彈出php提交表單通過后,彈出的對話框怎樣在當前頁彈出而不是在空白頁彈出?想實現(xiàn)這樣的效果:而不是空白頁彈出:------解決方案--------------------如果你的驗證用PHP在后端,那么就用Ajax;僅供參考:HTML code

iPadOS 17.4 で iPad のバッテリー壽命を最適化する方法 バッテリー壽命の延長はモバイル デバイス エクスペリエンスの鍵であり、iPad がその良い例です。 iPad のバッテリーの消耗が早すぎると感じても、心配しないでください。iPadOS 17.4 には、デバイスの実行時間を大幅に延長できるトリックや微調(diào)整が多數(shù)あります。この詳細なガイドの目的は、情報を提供するだけではなく、iPad の使用方法を変え、全體的なバッテリー管理を強化し、充電せずにデバイスをより長く使用できるようにすることです。ここで概説したプラクティスを採用することで、個人のニーズや使用パターンに合わせてテクノロジーをより効率的かつ意識的に使用するための一歩を踏み出すことができます。主要なエネルギー消費者を特定する
