|   /** * Create parent Node tree array * Parameter * $ar Array, adjacency list of data organized by * $id subscript or associated key name in the array as the primary key * $pid subscript or associated key name in the array as the parent key * Return 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 child node tree array    * parameter    * $ar array, adjacency list to organize data    * $id the subscript or associated key name in the array as the primary key     * $pid subscript or associated key name in the array as the parent key    * returns the multidimensional array    **/  function Find_child ($ar, $id = ' id ', $pid = ' pid ') {    F Oreach ($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;  }   $data = Array ( Array (' ID ' =>1, ' PARENT ' =>0, ' NAME ' => ' grandfather '), Array (' ID ' =>2, ' parent ' =>1, ' NAME ' => ' father '), Array (' ID ' =>3, ' PARENT ' =>1, ' NAME ' => ' Uncle '), 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 '); Print_r ($c);   |