У меня есть ниже рекурсивная функция в моей модели с CI, работая. В моем контроллере, мне нужно проверить, если функция работала правильно, как:Как вернуть true с рекурсивной функцией
if($this->my_model->level_corrector($id_page,$level)) echo 'Levels are corrected';
Но как функция всегда возвращает ложь (до конца рекурсии), я не мог понять, как достичь своей цели.
function level_corrector($id_page_of_parent,$level_of_parent)
{
$sql = "
SELECT id_page, id_parent, level
FROM page
WHERE id_parent = $id_page_of_parent";
$query = $this->db->query($sql);
if($query->num_rows() > 0)
{
$result = $query->result_array();
foreach ($result as $r)
{
$data = array('level'=>$level_of_parent+1);
$this->db->where('id_page', $r['id_page']);
if($this->db->update('page', $data))
{
$this->level_corrector($r['id_page'],$level_of_parent+1);
}
else
{
// let me handle it what to do
return false;
}
}
}
else
{ // again let me handle it to log a message or sth
return false; // (2)
}
return true; // (3) means it all gone right, so I can move on.
}
Осторожнее с этой строки: 'если ($ this-> db-> обновление (» page ', $ data)); '. Либо удалите условное, либо удалите точку с запятой :) – Cam
@Cam, я вызываю эту функцию внутри '$ this-> db-> trans_start()'. Поэтому я думаю, что мне просто нужно получить обратную связь от функции для 3 возможных условий. если ошибка, верните false; если, запрос пустой в последнем цикле, верните false, чтобы остановить рекурсию; если не все из них означают, что все пошло правильно, верните истину. Дайте мне знать, если я ошибаюсь в любом аспекте. –