1,pid=>0), Array (id=>2,pid=>0), Array (id=>3,pid=>2), Array (id=>4,pid=>0), Array (id=>5,pid= >3), Array (id=>6,pid=>1), Array (id=>7,pid=>1), Array (id=>8,pid=>6), Array (id=>9,pid=>7) , Array (id=>10,pid=>9)); The Sort function functions cmd ($a, $b) {if ($a [pid]== $b [PID]) return 0, return $a [pid]> $b [pid]?1:-1;}//Sort, in order to prevent the parent node in the data from appearing after the child node, The purpose of this situation is to prevent the confusion uasort ($ar, cmd) when the data has been modified several times, and/or is ordered in a regular sequence. Defines the target array $d = array (); Defines an index array that records the position of the node in the destination array $ind = Array (); foreach ($ar as $v) {$v [child] = array ();//Append a child key to each node if ($v [pid] = = 0) {$i = count ($d); $d [$i] = $v; $ind [$v [id]] = & $d [$i]; }else {$i = count ($ind [$v [Pid]][child]) $ind [$v [pid]][child][$i] = $v; $ind [$v [id]] =& $ind [$v [pid]][child][$i];} Check results print_r ($d);?> algorithm features: Using the B + Tree concept, only one cycle can generate a tree array
http://www.bkjia.com/PHPjc/531826.html www.bkjia.com true http://www.bkjia.com/PHPjc/531826.html techarticle 1,pid=>0), Array (id=>2,pid=>0), Array (id=>3,pid=>2), Array (id=>4,pid=>0), Array (id=>5, pid=>3), Array (id=>6,pid=>1), Array (id=>7,pid=>1), Array (id=>8,pid=>6), Array (id=>9,pid= >7), a ...