以下の再帰関数がCIで動作しています。再帰関数でtrueを返す方法
if($this->my_model->level_corrector($id_page,$level)) echo 'Levels are corrected';
しかし関数として常に(再帰を終了する)falseを返し、私は私の目標を達成する方法を見つけ出すことができませんでした。私のコントローラで は、私は、関数は次のように正常に働いていたかどうかを確認する必要があります。
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->更新(」ページ '、$データ)); '。条件付きを削除するか、セミコロンを削除してください:) – Cam
@Cam、私は '$ this-> db-> trans_start()'の中でこの関数を呼び出しています。だから私は3つの条件のために関数からフィードバックを得る必要があると思う。エラーの場合はfalseを返します。最後のループでクエリが空の場合はfalseを返し、再帰を停止します。それらのすべてが正しくなくなったというわけではないなら、真実に戻ってください。私が何らかの面で間違っているかどうかを教えてください。 –