<?php /* * 无限级分类 * @param array $items 二维数组数据 * return $tree */ function generateTree($items){ $tree = array(); foreach($items as $item){ if(isset($items[$item['pid']])){ $items[$item['pid']]['son'][] = &$items[$item['id']]; }else{ $tree[] = &$items[$item['id']]; } } return $tree; } //以下变量可以为数据库查出 $items = array( 1 => array('id' => 1, 'pid' => 0, 'name' => '总公司'), 2 => array('id' => 2, 'pid' => 1, 'name' => '集团'), 3 => array('id' => 3, 'pid' => 2, 'name' => 'xx部'), 4 => array('id' => 4, 'pid' => 3, 'name' => 'xx科'), 5 => array('id' => 5, 'pid' => 1, 'name' => '分公司1'), 6 => array('id' => 6, 'pid' => 5, 'name' => 'xx部'), ); $tree = generateTree($items); print_r($tree);
运行结果
Array ( [0] => Array ( [id] => 1 [pid] => 0 [name] => 总公司 [son] => Array ( [0] => Array ( [id] => 2 [pid] => 1 [name] => 集团 [son] => Array ( [0] => Array ( [id] => 3 [pid] => 2 [name] => xx部 [son] => Array ( [0] => Array ( [id] => 4 [pid] => 3 [name] => xx科 ) ) ) ) ) [1] => Array ( [id] => 5 [pid] => 1 [name] => 分公司1 [son] => Array ( [0] => Array ( [id] => 6 [pid] => 5 [name] => xx部 ) ) ) ) ) ) Process finished with exit code 0