ホームページ  >  記事  >  php教程  >  php:ツリー構造アルゴリズム 4

php:ツリー構造アルゴリズム 4

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

/**
* リストを表示
* @access public
*/
function DispList()
{
//インデントなしの表示モード
// $this->mIsDispListIndex = true ; 🎜> // echo('

新しいロールを追加

'); "?action=new&part=role">新しいロールを追加

');"
//
// $this->mListTitle = 'ユーザーロールリスト';
// $this->SetDataOption('list');
//
// $this->SetQueryTable( array($this->mTableUserRole) ); 🎜> // //クエリ順序
// $this->SetQueryOrder( 'asc', $this->mTableUserRole, 'sequence' );
//
// $this-> ;Query('list');
//parent::DispList();

// //配列をスタックとして使用する別の表示方法、A: スタックをプッシュするときにロールを保存します押した後にソースを削除します
// $this->CheckProperty('mrDb');
// $this->CheckProperty('mrSql'); // $this-> ;mrSql->Select('役割、タイトル、親');
// $this->mrSql->From($this->mTableUserRole); // $this-> ; mrSql->Orderby('parent, sequence');
// $this->mRs = $this->mrDb->Execute($this->mrSql->Sql()) ;
// if (0 mRs))
// {
// $source = & $this->mRs->GetArray();数値インデックス
// $stack = array(''); // Stack
// $stacki = array(-1); // スタックに対応して、スタック内のデータのレベルを記録します。ツリー
// $target = array();
// while (0 < count($stack))
// {
// $item = array_shift($stack);
// $lev = array_shift($stacki);
// if (!empty($item))
// {
// //ここで処理されたデータをターゲット配列に入れます
// array_push($target, str_repeat(' ', $lev) . $item);
// //$s1 = str_repeat(' ', $lev) . $item; }
// $del = array(); // $source から削除するノード
// $ar = array() // スタックに追加するノード
// foreach ( $source as $key=>$val)
// {
// //一致する子ノードを検索
// if (empty($item))
// {
// $find = empty($source[$key]['parent']);
// }
// else
// {
// $find = ($item = = $source[$key]['parent']);
// }
// if ($find)
// {
// array_unshift($ar, $source[ $ key]['role']);
// $del[] = $key;
// }
// }
// foreach ($ar as $val)
// {
// array_unshift($stack, $val);
// array_unshift($stacki, $lev + 1)
// }
// foreach ($del として $ val)
// {
// unset($source[$val]);
// }
// echo(implode(', ', $stack) . '< br />' . implode(', ', $stacki) '


// }
// debug_array();
// }
// else
// {
// echo('
データが取得されませんでした < /center>');
// }

//配列をスタックとして使用する別の表示方法 B: スタックにプッシュするときに配列インデックスを保存し、スタックからポップして削除しますソースを使用した後
$this->CheckProperty('mrSql');
$this->mrSql->Select('role) , タイトル, 親');
$this->mrSql->From($this->mTableUserRole);
$this->mrSql->Orderby('親, シーケンス');
$this->mRs = $this->mrDb->Execute($this->mrSql->Sql());
if (!empty($this->mRs) && !$ this->mRs->EOF)
{
$source = & $this->mRs->GetArray() // 数値インデックス
$stack = array(- 1); //Stack
$stacki = array(-1) //スタックに対応して、スタック内のデータのレベルをツリーに記録します
$target = array();while (0 < count($stack))
{
$item = array_shift($stack);
$lev = array_shift($stacki);
if (-1 != $item )
{
// ここで処理されたデータをターゲット配列に入れます
$s1 = str_repeat(' ', $lev) '編集 新しいロールを追加

');
array_unshift($target, array('role', 'operation'));
$this->CheckProperty(' mrLt');
$this->mrLt->SetData($target);
$this->mrLt->mListTitle = 'ユーザー役割リスト'; mrLt->mIsDispIndex = false;
$this->mrLt->Disp();
}
else
{
echo('
データが取得されませんでした< /center>');
}
} // 関数 DispList の終了
?>



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