1 /** 2 * 返回多层栏目 3 * @param $data 操作的数组 4 * @param int $pid 一级PID的值 5 * @param string $html 栏目名称前缀 6 * @param string $fieldPri 唯一键名,如果是表则是表的主键 7 * @param string $fieldPid 父ID键名 8 * @param int $level 不需要传参数(执行时调用) 9 * @return array 10 */ 11 public function channelLevel($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1) 12 { 13 if (empty($data)) { 14 return array(); 15 } 16 $arr = array(); 17 foreach ($data as $v) { 18 if ($v[$fieldPid] == $pid) { 19 $arr[$v[$fieldPri]] = $v; 20 $arr[$v[$fieldPri]]['level'] = $level; 21 $arr[$v[$fieldPri]]['html'] = str_repeat($html, $level - 1); 22 $arr[$v[$fieldPri]]["data"] = $this->channelLevel($data, $v[$fieldPri], $html, $fieldPri, $fieldPid, $level + 1); 23 } 24 } 25 return $arr; 26 }