> 백엔드 개발 > PHP 튜토리얼 > 三级归类不递归是怎样实现的呢 (附测试代码) 求解

三级归类不递归是怎样实现的呢 (附测试代码) 求解

WBOY
풀어 주다: 2016-06-13 12:55:00
원래의
917명이 탐색했습니다.

三级分类不递归是怎样实现的呢 (附测试代码) 求解

本帖最后由 anydy2008 于 2013-01-06 12:07:44 编辑 看了几天前的一个帖子  
http://bbs.csdn.net/topics/390331161
当中有snmr_com 的热心回复,提到不递归实现分类的方法。

我就想,按照这个逻辑可否将类别实现树形数组结构呢。
下面是我用递归形式生成的  代码如下:
<br />
<?<br />
$arr = array(<br />
    <br />
    array('id'=>1,'city_name'=>'中国','rel_id'=>'1','pid'=>0),<br />
    array('id'=>2,'city_name'=>'广东','rel_id'=>'1-2','pid'=>1),<br />
    array('id'=>3,'city_name'=>'深圳','rel_id'=>'1-2-3','pid'=>2),<br />
    array('id'=>4,'city_name'=>'广州','rel_id'=>'1-2-4','pid'=>2)<br />
   <br />
);<br />
<br />
function find_subclass( $pid ){<br />
    <br />
    global $arr;<br />
    $__arr = array();<br />
    foreach ( $arr as $k=>$v )<br />
    {<br />
        <br />
        if( $v['pid']==$pid )$__arr[] = $v;<br />
        <br />
    }<br />
    return $__arr;<br />
    <br />
}<br />
<br />
function tree_subclass($pid=0){<br />
    <br />
    $__arr = array();<br />
    $__arr = find_subclass($pid);<br />
    if( !empty($__arr) ){<br />
        <br />
        foreach ( $__arr as $k=>$v )<br />
        {<br />
<br />
            $__arr[$k]['subclass'] = tree_subclass($v['id']);<br />
            <br />
        }<br />
        <br />
    }<br />
    return $__arr;<br />
}<br />
<br />
var_dump(tree_subclass(0));<br />
<br />
?><br />
<br />
로그인 후 복사



期望通过不递归的形式得到的数组结构:

<br>
array(1) {<br>
  [0]=><br>
  array(5) {<br>
    ["id"]=><br>
    int(1)<br>
    ["city_name"]=><br>
    string(4) "中国"<br>
    ["rel_id"]=><br>
    string(1) "1"<br>
    ["pid"]=><br>
    int(0)<br>
    ["subclass"]=><br>
    array(1) {<br>
      [0]=><br>
      array(5) {<br>
        ["id"]=><br>
        int(2)<br>
        ["city_name"]=><br>
        string(4) "广东"<br>
        ["rel_id"]=><br>
        string(3) "1-2"<br>
        ["pid"]=><br>
        int(1)<br>
        ["subclass"]=><br>
        array(2) {<br>
          [0]=><br>
          array(5) {<br>
            ["id"]=> <div class="clear">
                 
              
              
        
            </div>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿