コントロール
いくつかアイデアをください! ---- Diao Yan
# 権限制御システムを一度作成したことがありますが、変更する必要があるため、効果的な解決策が見つかりませんでした。
# いくつかのアイデアと一般的なアイデアを教えてください。ありがとうございます。要件は次のとおりです。
# 1. 各父親ノードの下に複数の子が存在します
# 2. 各子は 1 つの父親を持つことも、複数の父親を持つこともできます (複数の父親のレベルが異なる場合があります。これは、クロスオーバー現象があることを意味します)
# 3. 各父親は、同じ子または異なる子を管理できます
# 4. 各父親がログインすると、自分の子供のみを見ることができます (別の子供を管理している場合、ログインした
# 父親は自分の下の子供のみを見ることができます) 、それらが同じであれば、彼らが見る子供も同じです)
# 5. 各父親は自分の父親(子供?)を追加できます
質問から、次のツリー構造が得られます。このツリーをどのように保存し、どのように取得するかが鍵となります。
--0--absion - +
- 1-- 001 002003
- + - +004 006 007 007008
+ - + - +
- 3-- 007 003 008+ ----+----+
--4-- 007 006
004 でログインすると、(1,001)-[2,004]-(3,007) と (1,002)-[2,004]-(代わりに、3,003)-(4,007) など
(1,003)-(2,007) が表示されるはずです。
つまり、すべてのユーザーはログイン後、場合によっては複数のブランチで子を下方向に検索します。
テーブルは2つあります
テーブル1は全メンバーの情報(以下Uとします)、主キーid_uを保存します
テーブル2はメンバー間の関係(以下Kとします)、主キーid_u
を保存しますid_u | 名前 ...
-------+------
006 |
K
レベル |右
-----+------+----------+------+---------- ---+----------
1 | 001 | 2 | 2 | 003 | 2 | | 1 | 3
3 | 004 | 2 | 4 | 1 |
4 | 007 | 3 | | 3 |
5 | 002 | 1 | 6 | | 14
6 | 004 | 2 | 7 | 5 | 12
7 | 003 | 3 | 9 | 6 | 8
8 | 008 | 3 | | 6 |
9 | 005 | 4 | | 7 | 10
10 | 006 | 4 | | 7 | 11
11 | 007 | 4 | | 7 |
12 | 006 | 2 | | 5 | 13
13 | 007 | 2 | | 5 |
14 | 003 | 1 | 15 | |
15 | 007 | 2 | 16 | 14 | 18
16 | 001 | 3 | | 15 | 17
17 | 002 | 3 | | 15 |
18 | 008 | 2 | | 14 |
その内: level 保存階層、next 保存下階層の id、previons 上階層保存の id、right 保存右階層の id
特定のデータ集団監視法に関して決定されます。 !
建议用数組計算、つまり一次性入数組、効率可能性高点
测试例、前未使用
$ar = array(
0,
array(id=> 1, id_u=>"001"、level=>1、next=>2、previons=>0、right=>5)、
array(id=>2、id_u=>003)レベル=>2、次=>0、前=>1、右=>3)、
配列(id=>3、id_u=>2、次= > 4、previons=> 1、right=> 0)、
array(id=> 4、id_u=>"007"、next=> 0、previons=> 3、right=> 0)、
array(id=> 5、id_u=>"002"、level=>1、next=> 6、previons=> 0、right=>14) ,
array(id=> 6,id_u=>"004", level=>2, next=> 7, previons=> 5, right=>12),
array(id=>; 7,id_u=>"003"、レベル=>3、次=> 前=> 6、右=> 8)、
配列(id=> 8,id_u=>) ", level=>3, next=>0, previons=>6, right=>0),
array(id=>9,id_u=>"005", level=>4, next=> 0、previons=> 7、right=>10)、
array(id=>10、id_u=>"006"、level=>4、next=> 0、前=> 7, right=>11),
array(id=>11,id_u=>"007", level=>4, next=>0, previons=>7, right=>0) ,
array(id=>12,id_u=>"006", level=>2, next=>0, previons=>5, right=>13),
array(id=>; 13,id_u=>「007」、レベル=>2、次=>0、前=>5、右=>0)array(id=>14,id_u=>"003", level=>1, next=>15, previons=>0, right=>0),
array(id=>15, id_u=>"007", level=>2, next=>16, previons=>14, right=>18),
array(id=>16,id_u=>"001", level=>3, next=>0, previons=>15, right=>17),
array(id=>17,id_u=>"002", level=>3, next= > 0、previons=>15、right=> 0)、
array(id=>18、id_u=>"008"、level=>2、next=>0、previons=> 14、right=> 0)
);
//print_r($ar);
関数ツリー($ar,$i,$key,$level) {
if($ar[$i][id_u] == $key || $ar[$i][レベル] > $level) {
for($j=0;$j エコー " ";
echo "+--";
echo $ar[$i][id_u]."
";
if($ar[$i][next] > 0)
tree($ar ,$ar[$i][next],$key,$level);
}
if($ar[$i][right] > 0)
tree($ar,$ar[$i][right] ],$key,$level);
}
$keys = array("001","002","003","004","005","006","007","008") ;
while(list($key,$value) = each($keys)) {
echo "===> $value
";
for($i=1;$i if($ar[$i][id_u] == $value) {
echo " [$value]
";
tree($ar,$i,$value) ,$ar[$i][レベル]);
}
}
}
?>

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

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

Dreamweaver Mac版
ビジュアル Web 開発ツール
