Я хочу получить идентификаторы дочерних элементов в массив. Из моей таблицы идентификатор 5 является родителем идентификатора (4, 11), а идентификатор 4 является родителем идентификатора 9. Если я вызываю childCategoryIds () функцию с идентификатором 5, этодолжен вернуть [11, 9, 4], но он возвращается [11, 4]. Моя функция и данные sql выглядят следующим образом:
Таблица:
id parent_id name
4 5 Cat Four
5 1 Cat Five
9 4 Cat Nine
11 5 Cat Eleven
моя функция:
function childCategoryIds($id){
$ci = & get_instance();
$ci->load->database();
$child_category_ids = array();
$ci->db->where('parent_id', $id)->order_by('id', 'DESC');
$query = $ci->db->get('categories');
$result = $query->result();
foreach ($result as $res):
childCategoryIds($res->id);
$child_category_ids[] = $res->id;
// var_dump($res->id);
endforeach;
return $child_category_ids;
}
Я получил вызов этой функции из моего контроллера.
childCategoryIds(5); /* here id = 5 */
Из функции $ child_category_ids вернуть идентификатор (11, 4). но var_dump ($ res-> id) показывает все идентификаторы (11, 9, 4) в цикле. Как я понимаю, цикл запускается только один раз в функцию или когда функция сама вызывает цикл, она не может выдвинуть свой идентификатор в $ child_category_ids .
Я получил следующий результат изэта функция.
array(2) {
[0] => string(2) "11"
[1] => string(1) "4"
}
но мой ожидаемый результат:
array(2) {
[0] => string(2) "11"
[1] => string(1) "9"
[2] => string(1) "4"
}
У меня есть несколько похожих вопросов, но я не могу найти решение.