小さな関数を書くメソッドを探しています
には分類テーブルがあります calss
ID -----一意の識別子
pid -----親 ID
name -----name
path -----Path
CREATE TABLE `calss` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL DEFAULT ' 0 ',
`name` varchar(32) NOT NULL,
`path` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET =utf8;
次に、パスを記述する方法を見つけます
たとえば、データは次のとおりです。
INSERT INTO calss VALUES (' 1', '0', ' WEB 開発', web);
INSERT INTO calss VALUES ('2', '1', 'backend', control);
INSERT INTO calss VALUES ('3', '2', '言語' , 言語);
INSERT INTO calss VALUES ('4', '2', 'database', data);
INSERT INTO calss VALUES ('5', '3', 'php', php);
INSERT INTO calss VALUES ('6', '3', 'jsp', jsp);
INSERT INTO calss VALUES ('7', '3', 'asp', asp);
INSERT INTO calss VALUES ('8', '0', 'モバイル アプリケーション開発', Phone);
INSERT INTO calss VALUES ('9', '8', 'ios', ios) ;
php カテゴリのパスを要求します
最終結果は次の形式になります
$php_path="web/control/ language/php/";
それを実装するための具体的な php コードを提供してください。それが使用されていると聞きましたが、再帰的思考についてはまだ理解できません。
再帰なしで実装することは可能ですか? 再帰を使用して実装する場合は、各コードのコメントを明確に書くのを手伝ってください。
最後の文はこんにちは、ボス、こんにちは女の子です。
-----解決策---------
を取得するために言われた循環 SQL に従うこともできますし、カジュアルに記述して、理解した後に変更することもできます
//SELECT id,pid,path FROM calss; データセットを取得し、それを次の配列に結合します。 $array = array('1' => 0, '2' => 1, '3' => 2, '4' => 2, '5' => 3, '6' => ; 3、'7' => 3、'8' => 8) $pathArray = array(1 => 'ウェブ', 2 => 'コントロール', 3 => '言語', 4 => 'データ', 5 => 'php', 6 => ' jsp'、7 => 'asp'、8 => '電話'、9 => 'ios'); //IDリストを取得する $idArry=配列(); getTopID(5, $array); // ID リストをループし、最終結果を出力します echo listPath(5, $idArr, $pathArray), "n"; unset($idArr); getTopID(6, $array); echo listpath(6, $idArr, $pathArray), "n"; unset($idArr); getTopID(8, $array); echo listpath(8, $idArr, $pathArray), "n"; unset($idArr); getTopID(9, $array); echo listpath(9, $idArr, $pathArray), "n"; unset($idArr); //関数 /*** 上位 ID 配列を取得する * @param $id * @param $array * @return 配列*/ 関数 getTopID($id, $array) { グローバル $idArr; if (isset($array[$id])) { $idArr[] = $array[$id]; getTopID($array[$id], $array); } } /*** 上位 ID 配列に従って結果を並べ替えます * @param $id * @param $list * @param $array * @戻り文字列*/ 関数 listPath($id, $list, $array) { $パス = ''; array_push($list, $id); 並べ替え($list); foreach ($list を $value) { if (isset($array[$value])) { $path .= $array[$value] . } } $path を返します。 <div class="clear"></div>