看了版主的无限分类,分成树形结构后,如何还原

WBOY
Freigeben: 2016-06-23 13:50:26
Original
783 Leute haben es durchsucht

父子无限分类原始数组<?/*获取无线分类,对无线分类进行节点路径排列*/$a=array (  0 =>  array (    'id' => '134',    'fid' => '0',    'name' => 't',  ),  1 =>  array (    'id' => '133',    'fid' => '0',    'name' => 'k',  ),  2 =>  array (    'id' => '132',    'fid' => '0',    'name' => 'j',  ),  3 =>  array (    'id' => '137',    'fid' => '133',    'name' => '我是k的分类1',  ),  4 =>  array (    'id' => '136',    'fid' => '134',    'name' => '我是t的分类t2',  ),  5 =>  array (    'id' => '135',    'fid' => '134',    'name' => '我是t的分类t1',  ),  6 =>  array (    'id' => '138',    'fid' => '137',    'name' => '我是k的分类1-1',  ),  7 =>  array (    'id' => '139',    'fid' => '138',    'name' => '我是k的分类1-1-1',  ),  8 =>  array (    'id' => '140',    'fid' => '139',    'name' => '我是k的分类1-1-1-1',  ),)?>开始形成树,并且增加路径,树形数组为$treesArray(    [0] => Array        (            [id] => 134            [fid] => 0            [name] => t            [path] => 134            [_sub] => Array                (                    [0] => Array                        (                            [id] => 136                            [fid] => 134                            [name] => 我是t的分类t2                            [path] => 134,136                        )                    [1] => Array                        (                            [id] => 135                            [fid] => 134                            [name] => 我是t的分类t1                            [path] => 134,135                        )                )        )    [1] => Array        (            [id] => 133            [fid] => 0            [name] => k            [path] => 133            [_sub] => Array                (                    [0] => Array                        (                            [id] => 137                            [fid] => 133                            [name] => 我是k的分类1                            [path] => 133,137                            [_sub] => Array                                (                                    [0] => Array                                        (                                            [id] => 138                                            [fid] => 137                                            [name] => 我是k的分类1-1                                            [path] => 133,137,138                                            [_sub] => Array                                                (                                                    [0] => Array                                                        (                                                            [id] => 139                                                            [fid] => 138                                                            [name] => 我是k的分类1-1-1                                                            [path] => 133,137,138,139                                                            [_sub] => Array                                                                (                                                                    [0] => Array                                                                        (                                                                            [id] => 140                                                                            [fid] => 139                                                                            [name] => 我是k的分类1-1-1-1                                                                            [path] => 133,137,138,139,140                                                                        )                                                                )                                                        )                                                )                                        )                                )                        )                )        )    [2] => Array        (            [id] => 132            [fid] => 0            [name] => j            [path] => 132        ))但是我有个问题,如何还原树呢就是还原成原始数组那种二维形式呢,然后多个path值,因为刚才最主要的目的是加个path值$a=array (  0 =>  array (    'id' => '134',    'fid' => '0',    'name' => 't',    'path'=>'134'  ),  1 =>  array (    'id' => '133',    'fid' => '0',    'name' => 'k',    'path'=>' 133,137'  ),.........................我只想用递归可惜才学疏浅,一直不会递归,只能取道一层。。。是在写不出来function test($array) {	foreach ($array as $k=>$v) {			if (array_key_exists('_sub', $v)) {				$temp[]=array_slice($v, 0,4);				 //$temp[]=test($v[''_sub'']);			} else {				$temp[]=$v;			}	}	return $temp;}$x=test($trees);print_r($x);打印出来的数组只有3个Array(    [0] => Array        (            [id] => 134            [fid] => 0            [name] => t            [path] => 134        )    [1] => Array        (            [id] => 133            [fid] => 0            [name] => k            [path] => 133        )    [2] => Array        (            [id] => 132            [fid] => 0            [name] => j            [path] => 132        ))。。。。真心求代码
Nach dem Login kopieren


回复讨论(解决方案)

<?php	$arr = Array(    0 => Array        (            'id' => 134,            'fid' => 0,            'name' => 't',            'path' => 134,            '_sub' => Array                (                    0 => Array                        (                            'id' => 136,                            'fid' => 134,                            'name' => '我是t的分类t2',                            'path' => '134,136'                        ),                     1 => Array                        (                            'id' => 135,                            'fid' => 134,                            'name' => '我是t的分类t1',                            'path' => '134,135'                        )                 )         ),     1 => Array        (            'id' => 133,            'fid' => 0,            'name' => 'k',            'path' => 133,            '_sub' => Array                (                    0 => Array                        (                            'id' => 137,                            'fid' => 133,                            'name' => '我是k的分类1',                            'path' => '133,137',                            '_sub' => Array                                (                                    0 => Array                                        (                                            'id' => 138,                                            'fid' => 137,                                            'name' => '我是k的分类1-1',                                            'path' => '133,137,138',                                            '_sub' => Array                                                (                                                    0 => Array                                                        (                                                            'id' => 139,                                                            'fid' => 138,                                                            'name' => '我是k的分类1-1-1',                                                            'path' => '133,137,138,139',                                                            '_sub' => Array                                                                (                                                                    0 => Array                                                                        (                                                                            'id' => 140,                                                                            'fid' => 139,                                                                            'name' => '我是k的分类1-1-1-1',                                                                            'path' => '133,137,138,139,140'                                                                        )                                                                 )                                                         )                                                 )                                         )                                 )                         )                 )         ),     2 => Array        (            'id' => 132,            'fid' => 0,            'name' => 'j',            'path' => 132        ) );$temp = array();function test($array,&$temp) { 	    foreach ($array as $k=>$v) {            if (array_key_exists('_sub', $v)) {                 $temp[]=array_slice($v, 0,4);                test($v['_sub'],$temp);             } else { 				array_push($temp, $v);             }    } } test($arr,$temp);print_r($temp);?>
Nach dem Login kopieren

你把函数修改为

function find_child($ar) {  foreach($ar as $v) $t[$v['id']] = $v;  foreach ($t as $k => $item){    $t[$k]['path'] = $item['id'];    if( $item['fid'] ) {      $t[$item['fid']]['_sub'][$item['id']] =& $t[$k];      $t[$k]['path'] = $t[$item['fid']]['path'] . ',' . $t[$k]['id'];    }  }  return $t;}
Nach dem Login kopieren
$a=array (  0 =>  array (    'id' => '134',    'fid' => '0',    'name' => 't',  ),  1 =>  array (    'id' => '133',    'fid' => '0',    'name' => 'k',  ),  2 =>  array (    'id' => '132',    'fid' => '0',    'name' => 'j',  ),  3 =>  array (    'id' => '137',    'fid' => '133',    'name' => '我是k的分类1',  ),  4 =>  array (    'id' => '136',    'fid' => '134',    'name' => '我是t的分类t2',  ),  5 =>  array (    'id' => '135',    'fid' => '134',    'name' => '我是t的分类t1',  ),  6 =>  array (    'id' => '138',    'fid' => '137',    'name' => '我是k的分类1-1',  ),  7 =>  array (    'id' => '139',    'fid' => '138',    'name' => '我是k的分类1-1-1',  ),  8 =>  array (    'id' => '140',    'fid' => '139',    'name' => '我是k的分类1-1-1-1',  ),);$r = find_child($a);foreach($r as $k=>$v) if(isset($v['_sub'])) unset($r[$k]['_sub']);print_r($r);
Nach dem Login kopieren
Array(    [134] => Array        (            [id] => 134            [fid] => 0            [name] => t            [path] => 134        )    [133] => Array        (            [id] => 133            [fid] => 0            [name] => k            [path] => 133        )    [132] => Array        (            [id] => 132            [fid] => 0            [name] => j            [path] => 132        )    [137] => Array        (            [id] => 137            [fid] => 133            [name] => 我是k的分类1            [path] => 133,137        )    [136] => Array        (            [id] => 136            [fid] => 134            [name] => 我是t的分类t2            [path] => 134,136        )    [135] => Array        (            [id] => 135            [fid] => 134            [name] => 我是t的分类t1            [path] => 134,135        )    [138] => Array        (            [id] => 138            [fid] => 137            [name] => 我是k的分类1-1            [path] => 133,137,138        )    [139] => Array        (            [id] => 139            [fid] => 138            [name] => 我是k的分类1-1-1            [path] => 133,137,138,139        )    [140] => Array        (            [id] => 140            [fid] => 139            [name] => 我是k的分类1-1-1-1            [path] => 133,137,138,139,140        ))
Nach dem Login kopieren

代码我先收下了,刚才看了一遍没有看懂。。。。。。  



谢谢两位,再次谢过了,分有点少请不要介意


哎  什么时候我能像2位那么强啊

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!