Two tree-shaped array constructors without recursion
/** * Create parent node tree Array * parameter * $ar array, adjacency list organized data * $id array as primary key subscript or association key name * $pid Array as the parent key subscript or association key name * Returns a multidimensional array **/function find_parent ($ AR, $id = ' id ', $pid = ' pid ') { foreach ($ar as $v) $t [$v [$id]] = $v; foreach ($t as $k + $item) { if ($item [$pid]) {if (isset) ($t [$item [$pid ]][' parent '] [$item [$pid]]) $t [ $item [$id]][' parent ' [$item [$pid]] =& $t [$item [$pid]]; } return $t;} /** * Create a sub-node tree array * parameters * $ar Array, adjacency list organized data * $id array as the primary key in the Subscript or association key name * $pid Array as the parent key subscript or association key name * Returns a multidimensional array **/function find_child ($a r, $id = ' id ', $pid = ' pid ') { foreach ($ar as $v) $t [$v [$id]] = $v; foreach ($t as $k + $item) { if ($item [$pid]) {$t [$item [$pid]][' child '] [$item [$id] ] =& $t [$k]; } } return $t;}
Example
$data = Array (' id ' =>1, ' parent ' =>0, ' name ' = ' grandfather '), array (' ID ' =>2, ' parent ' =>1, ' name ' = > ' father '), array (' ID ' =>3, ' parent ' =>1, ' name ' = ' uncles '), array (' ID ' =>4, ' parent ' =>2, ' name ' = > ' own '), array (' ID ' =>5, ' parent ' =>4, ' NAME ' = ' son '), $p = Find_parent ($data, ' id ', ' PARENT '); $c = Find_ Child ($data, ' ID ', ' PARENT ');
This article shows two tree-shaped array constructor related codes without recursion, and more about the PHP Chinese web.