[英]Recursive database queries using CodeIgniter (fixed)
我需要從我的表中獲取類別 ID,我的表是這樣的;
categories
id| name |parent
1 | shoes |0
2 | women_shoes |1
3 | man_shoes |1
4 | sweets |0
5 | man_sweets |4
6 | women_sweets |4
7 | women_red_sweets |6
8 | women_green_sweets |6
9 | men_blue_sweets |5
我使用 Codeigniter 3 並且我需要一個具有類別 ID 的數組,這是幫助程序文件中的 PHP 代碼;
function categories_list($id = 0, &$list = array()) { /// parent_id
$ci = & get_instance();
$cat = $ci->db->select("*")
->from("categories")
->where("parent",$id)
->get()->result();
foreach ($cat as $value) {
array_push($list,$value->id);
categories_list($list->id,$list);
}
return ($list);
}
$liste = categories_list(0);
print_r($liste);
此代碼僅打印array(1,4)
,但我需要這樣的數組: array(1,2,3,4,5,6,7,8)
。
我怎樣才能正確地創建這個?
修正我應該在$list=array()之前使用&字符作為參考,它應該是&$list=array()
當您遞歸調用categorie_list()
時,您實際上並沒有將其返回的數組提供給當前級別的數組有效負載。 這可以通過array_merge()
或array_push()
和擴展運算符來完成。 由於類別數據,這將包含冗余 ID。 如果要刪除重復項,可以調用array_unique()
。
以下代碼片段應該能夠幫助您繼續前進,以便您可以改進您的方法。
代碼:(非CodeIgniter PHPize.online Demo )
function categories_list($id = 0, $list = []) {
$ci = &get_instance();
foreach ($ci->db->get_where('categories', ['parent', $id])->result() as $row) {
$list[] = $row->id;
array_push($list, ...categories_list($row->id, $list));
}
return array_unique($list);
}
var_export(categories_list());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.