> 백엔드 개발 > PHP 튜토리얼 > ECshop의 무한분류재귀함수 반환값에 대한 자세한 설명

ECshop의 무한분류재귀함수 반환값에 대한 자세한 설명

伊谢尔伦
풀어 주다: 2023-03-11 14:56:01
원래의
1612명이 탐색했습니다.

ecshop 2차 개발시 상품 분류index를 할 때, 카테고리 ID를 기준으로 최상위 카테고리 ID를 얻어야 합니다. 첫 번째 반응은 recursion을 사용하여 전달하는 것이었기 때문에 다음과 같이 재귀 함수를 작성했습니다.

function getCatTopId($cat_id)
{
    if ($cat_id)
    {
      $res = Array();
        $sql = 'SELECT cat_id, parent_id'
             . ' FROM ' . $GLOBALS['ecs']->table('category') 
             . ' WHERE cat_id = ' . $cat_id . ' AND is_show = 1';
        $res = $GLOBALS['db']->getAll($sql);
        if ($res[0]['parent_id'] > 0)
        {
            getCatTopId($res[0]['parent_id']);
        }
        else
        {
            return $res[0]['cat_id'];
        }
    }
    else
    {
        return 1;
    }
}
로그인 후 복사

테스트 프로그램이지만 반환 값을 얻지 못하셨나요? 오랫동안 확인해 본 결과, 아무런 오류도 발견되지 않았습니다. 뇌의 회로가 망가진 것 같았습니다. 오늘 Shui Shen(친절한 네티즌)에게 물어보니 답변을 도와주셨어요. 수정 사항은 다음과 같습니다.

function getCatTopId($cat_id)
{
    if ($cat_id)
    {
     $res = Array();
        $sql = 'SELECT cat_id, parent_id'
             . ' FROM ' . $GLOBALS['ecs']->table('category') 
             . ' WHERE cat_id = ' . $cat_id . ' AND is_show = 1';
        $res = $GLOBALS['db']->getAll($sql);
        if ($res[0]['parent_id'] > 0)
        {
            return getCatTopId($res[0]['parent_id']); // 修改处,多写个 return ,让函数返回值
        }
        else
        {
            return $res[0]['cat_id'];
        }    }
    else
    {
        return 1;
    }
}
로그인 후 복사

함수는 내부적으로 작성되어 있어도 내부 함수 위치로만 돌아갑니다. , 외부에 또 다른 주요 기능 레이어가 있으므로 다시 돌아와야 합니다

위 내용은 ECshop의 무한분류재귀함수 반환값에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿