Maison > Questions et réponses > le corps du texte
$data = [
['id' => 1,'pid' => 0,'name' => '销售部'],
['id' => 2,'pid' => 0,'name' => '技术部'],
['id' => 3,'pid' => 2,'name' => '前端'],
['id' => 4,'pid' => 1,'name' => '电话销售'],
['id' => 5,'pid' => 2,'name' => '后端'],
['id' => 6,'pid' => 1,'name' => '电商销售'],
['id' => 7,'pid' => 5,'name' => 'php'],
['id' => 8,'pid' => 7,'name' => 'php子部门'],
['id' => 9,'pid' => 6,'name' => '淘宝销售'],
['id' => 10,'pid' => 4,'name' => '打电话员'],
];
Réalisé comme :
$data = [
['id' => 1,'pid' => 0,'name' => '销售部','level' => 0],
['id' => 4,'pid' => 1,'name' => '电话销售','level' => 1],
['id' => 10,'pid' => 4,'name' => '打电话员','level' =>2],
['id' => 6,'pid' => 1,'name' => '电商销售','level' => 2],
['id' => 9,'pid' => 6,'name' => '淘宝销售','level' =>1],
['id' => 2,'pid' => 0,'name' => '技术部','level' => 0],
['id' => 3,'pid' => 2,'name' => '前端','level' => 1],
['id' => 5,'pid' => 2,'name' => '后端','level' => 1],
['id' => 7,'pid' => 5,'name' => 'php','level' => 2],
['id' => 8,'pid' => 7,'name' => 'php子部门','level' => 3],
];
大家讲道理2017-05-31 10:36:56
Obtenez d'abord la paire de relations de tableau correspondant au pid comme clé
> $a1 = pid[0] = [[id, pid=0, name],[id, pid=0, name]]
> pid[1] = [[id, pid=1, name],[id, pid=1, name]]
Écrire une fonction récursive
function buildArr(& $a, $start, $level) {
foreach($a[$start] as $pid => $aa) {
$a[$start][$pid]['level'] = $level;
if(isset($a[$pid])) {
buildArr($a, $pid, $level + 1);
}
}
}
Appel : buildArr($a1, 0, 0);
Puis bouclez pour obtenir le contenu de $a1
迷茫2017-05-31 10:36:56
Tout d'abord, vous devez préciser qu'il ne peut pas y avoir de références circulaires. Par exemple, id=0 pid=1 et id=1 pid=0 ne peuvent pas exister en même temps. structure et enfin comment parcourir chaque arbre, ordre avant, milieu, arrière, parcours de niveau, etc., c'est très simple