您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP处理父子层级选择问题

2025/11/8 6:15:23发布32次查看
/** * @param $data 操作的数组 * @param string $fieldpri 唯一键名,如果是表则是表的主键 * @param string $fieldpid 父id键名 * @param int $pid 一级pid的值 * @param string $sid 子id用于获得指定指id的所有父id * @param int $type 操作方式1=>返回多维数组,2=>返回一维数组,3=>得到指定子id(参数$sid)的所有父 * @param string $html 名称前缀,用于在视图中显示层次感的列表 * @param int $level 不需要传参数(执行时调用) * @return array */ private function channel($data, $fieldpri = 'cid', $fieldpid = 'pid', $pid = 0, $sid = null, $type = 2, $html =  , $level = 1) { if (!$data) { return array(); } switch ($type) { case 1: $arr = array(); foreach ($data as $v) { if ($v[$fieldpid] == $pid) { $arr[$v[$fieldpri]] = $v; $arr[$v[$fieldpri]]['html'] = str_repeat($html, $level - 1); $arr[$v[$fieldpri]][data] = self::channel($data, $fieldpri, $fieldpid, $v[$fieldpri], $sid, $type, $html, $level + 1); } } return $arr; case 2: $arr = array(); $id = 0; foreach ($data as $v) { if ($v[$fieldpid] == $pid) { $arr[$id] = $v; $arr[$id]['level'] = $level; $arr[$id]['html'] = str_repeat($html, $level - 1); $sarr = self::channel($data, $fieldpri, $fieldpid, $v[$fieldpri], $sid, $type, $html, $level + 1); $arr = array_merge($arr, $sarr); $id = count($arr); } } return $arr; case 3: static $arr = array(); foreach ($data as $v) { if ($v[$fieldpri] == $sid) { $arr[] = $v; $sarr = self::channel($data, $fieldpri, $fieldpid, $pid, $v[$fieldpid], $type, $html, $level + 1); $arr = array_merge($arr, $sarr); } } return $arr; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了php处理父子层级选择问题,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product