私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレphpのツリーのアルゴリズムがわかんねんんだよ!
php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
便乗質問、
HTMLに関する質問ですが、ツリーのアルゴリズムについてなので。。。
HTMLタグの<ul><li><li></ul>をネストして書こうと思っているのですが、
データベースを使っていたりデータベースをチューニングしてる関係などにより、
各項目について、
●上から何番目か($nとします)・・・@seq =(1,2,3,4,5,6,7,8,9,10)とし、$nには1,2,3,4,..10が入ります
●階層の深さが何階層目か($depth[$n]とします)
●項目名($name[$n]とします)
しかわかっていません。
★参考:<ul><li></li></ul>の見た目とソースの対応を、下記URLにおいておきます。
http://31.com/tmp/ul_algorithm.html
で、やりたいのはこれらの情報を使って
*上から順*にソースを書き込んでいきたいということです。
そのためのアルゴリズムがわからずに苦慮しています。
$depth[n]=$depth[n-1]のときは、
単に<li>name(n)</li>と書けばいいことは自明です
しかし、それ以外のパターンのアルゴリズムがわからず。。。
なお、アルゴリズムの考え方やそのヒントでも、phpでやperlのソースでも、
あるいは、ヒントだけでもいいので、教えていただければ幸いです。
HTMLに関する質問ですが、ツリーのアルゴリズムについてなので。。。
HTMLタグの<ul><li><li></ul>をネストして書こうと思っているのですが、
データベースを使っていたりデータベースをチューニングしてる関係などにより、
各項目について、
●上から何番目か($nとします)・・・@seq =(1,2,3,4,5,6,7,8,9,10)とし、$nには1,2,3,4,..10が入ります
●階層の深さが何階層目か($depth[$n]とします)
●項目名($name[$n]とします)
しかわかっていません。
★参考:<ul><li></li></ul>の見た目とソースの対応を、下記URLにおいておきます。
http://31.com/tmp/ul_algorithm.html
で、やりたいのはこれらの情報を使って
*上から順*にソースを書き込んでいきたいということです。
そのためのアルゴリズムがわからずに苦慮しています。
$depth[n]=$depth[n-1]のときは、
単に<li>name(n)</li>と書けばいいことは自明です
しかし、それ以外のパターンのアルゴリズムがわからず。。。
なお、アルゴリズムの考え方やそのヒントでも、phpでやperlのソースでも、
あるいは、ヒントだけでもいいので、教えていただければ幸いです。
どなたかお願いします。
> しかし、それ以外のパターンのアルゴリズムがわからず。。。
行頭 → <ul> * $depth[n]
$depth[n-1]-$depth[n]=1 → <ul>
$depth[n-1]-$depth[n]=2 → <ul><ul>
$depth[n-1]-$depth[n]=-1 → </ul>
行末 → </ul> * $depth[n]
単純にこれじゃダメかい?
行頭 → <ul> * $depth[n]
$depth[n-1]-$depth[n]=1 → <ul>
$depth[n-1]-$depth[n]=2 → <ul><ul>
$depth[n-1]-$depth[n]=-1 → </ul>
行末 → </ul> * $depth[n]
単純にこれじゃダメかい?
(つづき)
$HTMLcattree .= "<li>\n";
//項目名を表示
$HTMLcattree .= $name;
//「前の項目の階層数」として使う
$before_depth = $now_depth;
}
//締めの、</li></ul>を挿入
$ul_li_insert = $before_depth;
$HTMLcattree .= "</li>\n";
for ($i=1;$i<=$ul_li_insert;$i++){
$HTMLcattree .= "</ul>\n";
$HTMLcattree .= "</li>\n";
}
$HTMLcattree .= "</ul>\n";
print $HTMLcattree;
//ありがとうございました。
$HTMLcattree .= "<li>\n";
//項目名を表示
$HTMLcattree .= $name;
//「前の項目の階層数」として使う
$before_depth = $now_depth;
}
//締めの、</li></ul>を挿入
$ul_li_insert = $before_depth;
$HTMLcattree .= "</li>\n";
for ($i=1;$i<=$ul_li_insert;$i++){
$HTMLcattree .= "</ul>\n";
$HTMLcattree .= "</li>\n";
}
$HTMLcattree .= "</ul>\n";
print $HTMLcattree;
//ありがとうございました。
コンピュータサイエンスの基本として、データ構造~とりわけツリーの扱いは基本かつ大事なんですね。
類似してるかもしれないスレッド
- せっかくだからPHPで掲示板作ってみませんか? (356) - [36%] - 2017/12/31 9:31 ☆
- 【PHP】フレームワークについて語るスレ13【総合】 (985) - [35%] - 2009/9/23 3:04 ○
- 【PHP】フレームワークについて語るスレ10【総合】 (1001) - [35%] - 2008/8/24 19:04 ○
- 【PHP】フレームワークについて語るスレ12【総合】 (994) - [35%] - 2009/3/19 13:46 ○
- 【PHP】フレームワークについて語るスレ10【総合】 (1001) - [35%] - 2008/12/23 16:48 ○
トップメニューへ / →のくす牧場書庫について