ホームページ  >  記事  >  バックエンド開発  >  親IDが複数ある場合、以下の子IDの機能を取得するにはどうすればよいですか?

親IDが複数ある場合、以下の子IDの機能を取得するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-20 12:38:481004ブラウズ

プロジェクトに取り組んでおり、その下のサブ ID のレコードをクエリするために複数の親 ID が必要です。単一の親 ID のレコードのみをクエリできる関数を作成しました。複数の記述方法がわかりません。誰ができるかわかりません。助けてくれてありがとう!私が書いた関数は次のとおりです:

function get_child_id($data, $parent_id = '0') {        static $child;        foreach ($data as $value) {            if ($value['parent_id'] == $parent_id) {                $child .= ',' . $value['cat_id'];                $this->get_child_id($data, $value['cat_id'], $level + 1);            }        }        return $child;    }


Replyディスカッション (解決策) へ

ループ内でメソッドを呼び出すだけです。

$parent_ids = array(1,2,3,4);$resul t= array();foreach($parent_ids as $parent_id){    $result[] = get_child_id($data, $parent_id);}function get_child_id($data, $parent_id = '0') {        static $child;        foreach ($data as $value) {            if ($value['parent_id'] == $parent_id) {                $child .= ',' . $value['cat_id'];                $this->get_child_id($data, $value['cat_id'], $level + 1);            }        }        return $child;    }

親 ID ごとに get_child_id を呼び出すだけで十分ではないでしょうか?

ただし、static $child; を複数回呼び出すと問題が発生します

get_child_id を複数回ループすると、サブ列 ID が繰り返し表示されます

#2 お伝えしました問題が発生します
核心は static $child; です。

    function get_child_id($data, $parent_id = '0') {        $child = '';        foreach ($data as $value) {            if ($value['parent_id'] == $parent_id) {                $child .= ',' . $value['cat_id'];                $child .= $this->get_child_id($data, $value['cat_id'], $level + 1);            }        }        return $child;    }

これを発見しましたが、サブ列 ID がまだ重複しています

テスト データを投稿してください。ID は一意ではないはずです (いいえ)無限ループはすでにあなたに対して非常に丁寧です)

テスト データを投稿します。ID は一意ではないはずです (無限ループはすでにあなたに対して非常に丁寧です)


投稿してください テストデータはIDが一意ではないはずです(無限ループがない場合は非常に丁寧です)
開いているページが多すぎるため、デバッグが間違っています。 、司会者!

私 #4 がコードを渡しましたよね?

私 #4 がコードを渡しませんでしたか?


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