Codeigniter のモデルで再帰を使用したいのですが、再帰関数で使用するグローバル変数をどこで宣言すればよいかわかりません。
地理的分類順に並べた製品のカタログを表示しようとしています。地理的データベースは階層ツリーであり、場所には息子、孫、ひ孫などを含めることができるため、再帰が必要です (たとえば、ロンドンはイングランドの息子であり、イギリスの息子であり、ヨーロッパの息子です)。 )。
$arrCatalog
再帰の最後に、すべての積を保持する変数を返したいと思います。だから私の他の質問は、最終的にその変数を返す方法ですか?
これが私のコードです(グローバル変数の処理方法がわからなかったため、まだテストされていません):
class Catalogs_model extends CI_Model {
public function __construct()
{
parent::__construct();
}
function getCatalog($place_id, $prod_type)
{
$sql =
"SELECT id, heb_name, type FROM places p
INNER JOIN places_relations r ON p.id = r.son
WHERE father = ?
ORDER BY sort_name";
$query = $this->db->query($sql, $place_id);
if($query->num_rows() > 0) {
foreach ($query->result() as $place) {
$sql2 =
"SELECT code, heb_title, price, place_id FROM products
INNER JOIN products_places ON prod_code=code
WHERE place_id = ? AND prod_type = ?";
$query2 = $this->db->query($sql, $place_id, $prod_type);
if($query2->num_rows() > 0) {
foreach ($query2->result() as $product) {
$arrCatalog[] = $product; // $arrCatalog is the global variable I don't know where to declare and how to return.
}
$this->getCatalog($place['id'], $prod_type);
}
}
}
}
}