ホームページ  >  記事  >  バックエンド開発  >  PHP はツリーを横断します。 子ノードは複数の親ノードを持つことができます。 アドバイスをお願いします。

PHP はツリーを横断します。 子ノードは複数の親ノードを持つことができます。 アドバイスをお願いします。

WBOY
WBOYオリジナル
2016-06-23 14:21:481092ブラウズ

この投稿は asmd1234567 によって最終編集されました: 2013-09-12 11:56:42

php は複数の親ノードを走査します

親ノードが複数の子ノードを持つことができ、子ノードが存在することを示したいと考えています。ノードは複数を持つことができます 親ノードは、実行に失敗したため、自分が書いた関数が正しいかわかりません、ごめんなさい
 $result = array(); /*Parse error: syntax error, unexpected '=', expecting ',' or ';' *//*我本来希望这个是个全局的数组,但是上网查了一下,发现现在不可以了,不知道各位大神有没有什么好的方法,小弟在此谢过啦*/$result[0] = mysql_query("select cID,number,isbasicpart from relationship  where pID='{$id}'");/*cID为子节点号,isbasicpart为是否为叶节点,number为父子间的数量*/echo "<table cellpadding='0' cellspacing='0' border='0'>"; echo "<tr> <td> {$id}";$i=0; 	function buildtree($i){	 while($row = mysql_fetch_array($result[$i])){ if($row['isbasicpart']==1)  echo "<td>'--'<td>{$row['cID']}<td>'('<td> {$row['number']}<td>')'</tr>";else  { echo "<td>'--'<td>{$row['cID']}<td>'('<td> {$row['number']}<td>')'";           $i=$i+1;$sql="select cID,number,isbasicpart from relationship  where pID='{$row['cID']}'"; $result[$i]=mysql_query($sql); buildtree($i);}} echo '</table>';} buildtree(0);}

ディスカッションに返信(解決策)

親ノードは複数を持つことができます複数の子ノードがあり、子ノードは複数の親ノードがあります
これはツリーとは呼ばれません、ネットワークと呼ばれます

あなたが持っているものは多対多です。 。 。 。

このコードを見るとめまいを感じませんか?

13 行目にグローバル $result を追加します
関数内の複数の td タグは閉じられていません
関数は複数のテーブル クローズ タグを生成しますが、テーブル オープン タグは 1 つだけです

親ノードは複数の子ノードを持つことができます、A子ノードは複数の親ノードを持つことができます
これはツリーとは呼ばれません、ネットワークと呼ばれます


思い出させてくれてありがとう:)

あなたのものは多対多です。 。 。 。

リマインダーをありがとう:)

13 行目にグローバル $result を追加します。
関数内の複数の td タグが閉じられていません
関数は複数のテーブル終了タ​​グを生成しますが、テーブル開始タグは 1 つだけです

ありがとうございますまだ問題はありますが、目標に一歩近づいています。 PHP 言語を学び始めたばかりですが、私の書いたコードがあまり良くないと言われました。問題の考え方が間違っているのか、それともコードが標準的な方法で書かれていないのかを聞きたいです。プログラミングが足りないために、良いアルゴリズムが思いつかないこともあると思います。もっと本を読んで古典的なアルゴリズムを覚える必要があるでしょうか?再度ご回答いただきありがとうございます、ありがとうございます!

再帰的にクエリを実行していること自体は問題ありません
クエリキーが正しいかどうかだけ注意してください

テーブルを使用して結果を出力する場合、タグが一致しない場合でも、正しいクエリ結果が生成されます結果が紛らわしいです
最初にテーブルを使用せず、結果を最初に置くことをお勧めします データは正しいです

続きを読む (ソースコード、重要なのは設計アイデアを見ることです。アルゴリズムに関しては、通常、基本的な Web ではあまり需要がありませんが、より詳細なコードを作成することは良いことです。最も重要なのは、設計フレームワークとパターンです。 (優れたソース コードの設計アイデアとコード仕様を参照してください)。

あとは、知識に不足がないように多面的に本を読むだけで、徐々に自分の知識体系を持つことができます

あなたはそうです 再帰クエリは問題ありません
クエリキーが正しいかどうかに注意してください正しいです

テーブルを使用して結果を出力する場合、タグが一致しない場合、正しいクエリ結果も混乱を招く結果を生成します
最初にテーブルを使用するのではなく、最初に正しいデータを取得することをお勧めします

ありがとうあなたは本当に!

もっと見る (ソース コード、重要なのは設計アイデアを確認することです。アルゴリズムに関しては、通常、基本的な Web ではあまり需要がありませんが、さらに深く掘り下げるのは良いことです。よりクールなコードを書くことができます。重要なのは設計フレームワークとパターン) もっと書く(読んだ良いソースコードの設計思想やコード仕様を参考にする)

あとは知識に不足がないように多角的に本を読むだけ、そして徐々に自分自身の知識体系を持つことができます


ありがとうございました、一生懸命頑張ります、私もあなたがもっと良くなるように祈っています:)

続きを読む (ソース コード、重要なのは設計アイデアを確認することです。アルゴリズムについては、通常、基本的な Web ではあまり需要がありませんが、さらに深く掘り下げることは良いことです。最も重要なのはデザイン フレームワークとパターンです)。さらに詳しく書いてください (デザインのアイデアとパターンを参照してください)。良いソースコードのコード仕様)

あとは、知識に不足がないように、多面的に本を読んで、徐々に自分の知識を発展させることができるシステム

もう一度聞きたいのですが、どこで見つけることができますか優れたソースコード?何か良い本やウェブサイト、あるいは良いコードを書いている人はいますか?

親ノードは複数の子ノードを持つことができ、子ノードは複数の親ノードを持つことができます
これは、ツリーとは呼ばれず、ネットワークと呼ばれます。これは、lz のようなツリーが存在する可能性があるという古典的な答えです。データ構造が明確ではありません。出力をループするにはどうすればよいですか?

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