>백엔드 개발 >PHP 튜토리얼 >무제한의 제품 카테고리를 읽기 위한 재귀의 PHP 실제 사용

무제한의 제품 카테고리를 읽기 위한 재귀의 PHP 실제 사용

WBOY
WBOY원래의
2016-07-29 09:12:381505검색

최근 쇼핑몰 프로젝트를 진행하면서 분류 테이블을 정리하기 위해 pid(상위 클래스 ID)를 통해 각 카테고리에 데이터를 꺼내야 했습니다. 2차원 데이터를 트리 형식으로 읽어오기 위해 프로젝트에 다음 방법을 캡슐화했습니다.

<code><span>/**
 * [treeCats description]
 *<span> @param</span>  [array]  $arr   [原始未排序的数组]
 *<span> @param</span>  [array]  $limit [第一个元素代表开始递归的parent_id,默认为0,第二个元素代表剔除元素及子元素cat_id,如果没有传值,默认为0]
 *<span> @param</span>  integer $level [函数调用的深度]
 *<span> @return</span> [array]         [排好序的数组]
 */</span><span>public</span><span><span>function</span><span>treeCats</span><span>(<span>$arr</span>,<span>$limit</span>,<span>$level</span>=<span>0</span>)</span>{</span><span>$rec</span> = <span>array</span>();
            <span>//先消除cat_id对应的值</span><span>foreach</span> (<span>$arr</span><span>as</span><span>$key</span>=><span>$value</span>){
            <span>if</span>(<span>$value</span>[<span>'cat_id'</span>]!=<span>$limit</span>[<span>'cd'</span>]){
                <span>$arr_new</span> [<span>$key</span>]=<span>$value</span>;
            }

        }
        <span>//对于新数组进行遍历</span><span>foreach</span> (<span>$arr_new</span><span>as</span><span>$key</span> => <span>$value</span>) {
        <span>if</span>(<span>$value</span>[<span>'parent_id'</span>]==<span>$limit</span>[<span>"pd"</span>] &&<span>$value</span>[<span>'parent_id'</span>]!=<span>$limit</span>[<span>"cd"</span>]){
                <span>$value</span>[<span>'level'</span>]=<span>$level</span>;
                <span>$rec</span> []= <span>$value</span>;
                <span>//生成用于下一层循环的数组</span><span>$next_limit</span> = <span>array</span>(<span>"pd"</span>=><span>$value</span>[<span>'cat_id'</span>],<span>"cd"</span>=><span>$limit</span>[<span>"cd"</span>]);

                <span>$rec</span> = array_merge(<span>$rec</span>,<span>$this</span>->treeCats(<span>$arr</span>,<span>$next_limit</span>,<span>$level</span>+<span>1</span>));
            }
        }       
        <span>return</span><span>$rec</span>;
    }
</code>

여기서 $limit를 설정하는 적용 시나리오는 이 카테고리의 상위 카테고리가 원래 하위 카테고리로 수정되면 브랜치를 잃게 되므로 이때 선택적 카테고리는 Eliminate로 설정해야 합니다. 그 하위 클래스.
무제한의 제품 카테고리를 읽기 위한 재귀의 PHP 실제 사용

').addClass('사전 번호 매기기').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

위 내용은 내용의 측면을 포함하여 제품의 무제한 카테고리를 반복적으로 읽을 수 있는 PHP의 실제 사용을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.