CI 묻고 답하기

제목 함수 실행 관련해서 문의 드립니다.
글쓴이 온더탑 작성시각 2013/08/09 18:43:36
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 13240   RSS
DB안에 특정 id를 검색해서 그 결과를 다음 페이지에 반영하고 싶은데요.

//DB 안의 내용을 검색해서 리턴해 주는 함수
public function make_res_number($res_number)
{
$this->load->model('reservation_model');
$result = $this->reservation_model->search_res_number($res_number);
if(count($result))
{
$res_number++;
$this->make_res_number($res_number);
}
else
{
                       //여기서 검색결과 DB상에 없는 값을 만들어서 리턴합니다.
                      echo $res_number; //여기 $res_number 값은 찍힙니다.
return $res_number;
}
}


//Ci url로 호출한 함수
public function regist_reservation()
{
$v = $this->make_res_number(20130809001);
//여기 값이 Null로 나옵니다.
echo $v;
echo "함수 실해 후";
}


make_res_number 함수에서 값이 찍힌 다음 "함수 실행 후"도 찍힌 걸 확인했는데
$v 값에는 리턴값이 안들어가 있습니다..


이럴 경우 어떻게 해야할까요...
 다음글 pagination에서 post 값 넘겨받기 (4)
 이전글 Linux에서 Windows로 옮긴뒤 시스템 라이브러리... (4)

댓글

변종원(웅파) / 2013/08/10 10:12:37 / 추천 0
재귀함수가 작동을 안하는 것 같네요. ci 로그나 아파치 로그 확인을 해보시고

저런 경우 굳이 재귀함수로 만들 필요는 없을 것 같네요.

search하는 모델함수에서 해당 넘버를 검색해서 없을 경우엔 그 넘버를 반환하고
있다면 select_max한 값에 1을 더해서 반환하게 만들면 간단합니다.
Artz / 2013/08/11 02:16:49 / 추천 0
M에서 재귀함수 A를 호출했다고 칠 경우에
호출받은 A가 A', A'', A'''로 재귀호출되었다면,
리턴값은 역순인 A''' -> A'' -> A'으로 전달되고,
최종적으로 A가 받아서 M으로 전달하게 됩니다.

그런데 위 코드에선 else에서만 return이 존재하고 있기 때문에
재귀동작이 제대로 이루어지지 않을 수 밖에 없지요.

if문 내부의 $this->make_res_number($res_number);를
return $this->make_res_number($res_number);로 고치면
간단히 해결될 것으로 보입니다만,
재귀함수에 대해 다시 한번 생각해보면서 직접 해보시는게 좋을 것 같네요.