ホームページ >バックエンド開発 >PHPチュートリアル >小さな関数を作成するためのソリューションを探しています

小さな関数を作成するためのソリューションを探しています

WBOY
WBOYオリジナル
2016-06-13 13:46:33823ブラウズ

小さな関数を書くメソッドを探しています
には分類テーブルがあります 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 に従うこともできますし、カジュアルに記述して、理解した後に変更することもできます

PHP コード


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