三级分类不递归是怎样实现的呢 (附测试代码) 求解
本帖最后由 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>
登入後複製