ホームページ > バックエンド開発 > PHPチュートリアル > PHPは再帰関数を複数回呼び出します

PHPは再帰関数を複数回呼び出します

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 13:36:38
オリジナル
1618 人が閲覧しました

再帰関数は次のとおりです:

/***递归获取指定分类下的子类*@params $categories array 全部分类的数组*@params $parent_id int 父类id 默认为顶级分类*@return $arr array 获取到的子类数组**/function get_child_category($categories,$parent_id=0){	static $arr=array();		foreach ($categories as $category){			if ($category['parent_id']==$parent_id){				$arr[]=$category;				get_child_category($categories,$category['cat_id']);			}		}	return $arr;}
ログイン後にコピー


問題の説明: この関数を使用して、指定された親クラスの下のサブクラスを取得したいのですが、2 回目以降は、毎回この関数を呼び出しても問題ありません。たとえば、トップレベルのカテゴリ A、B、C があり、カテゴリ A には 3 つのサブカテゴリ a1、a2、a3 があり、カテゴリ B が含まれます。には 3 つのサブカテゴリ b1、b2、および b3 があります。この関数を初めて呼び出すと、A の下にあるすべてのサブクラスが取得されます。2 回目にこの関数を呼び出すと、B の下にあるサブクラス b1、b2、および b3 を取得する必要がありますが、a1、a2、a3、b1、 b2. b3、静的変数の問題だと思いますが、静的変数を使用しない場合、再帰で値を保存できません。最後に取得したデータをクリアしたいのです。一度再帰関数を呼び出した後、解決方法がわかりません。アドバイスをお願いします。


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

メモリのオーバーヘッドを減らすために

function get_child_category($categories,$parent_id=0, $arr=array()){    foreach ($categories as $category){        if ($category['parent_id']==$parent_id){            $arr[]=$category;            $arr = get_child_category($categories,$category['cat_id'], $arr);        }    }    return $arr;}
ログイン後にコピー
をパラメータとして渡します。参照を渡すことができます
function get_child_category(&$categories, $parent_id=0, &$arr=array()){    foreach ($categories as $category){        if ($category['parent_id']==$parent_id){            $arr[]=$category;            get_child_category($categories, $category['cat_id'], $arr);        }    }    return $arr;}
ログイン後にコピー
print_r(get_child_category($ar, 0));print_r(get_child_category($ar, 2));
ログイン後にコピー
を呼び出します

問題は解決しました。モデレータの熱心な助けに感謝します! ! !

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート