php分类数据组合

1,数据结构

array (size=5)
  0 => 
    array (size=7)
      'id' => int 5
      'pid' => int 3
      'name' => string '怎么续费' (length=12)
      'en_name' => string '' (length=0)
      'kr_name' => string '' (length=0)
      'sort' => int 12
      'status' => int 0
  1 => 
    array (size=7)
      'id' => int 4
      'pid' => int 3
      'name' => string '怎么购买' (length=12)
      'en_name' => string '' (length=0)
      'kr_name' => string '' (length=0)
      'sort' => int 11
      'status' => int 0
  2 => 
    array (size=7)
      'id' => int 1
      'pid' => int 0
      'name' => string '新手入门' (length=12)
      'en_name' => string '' (length=0)
      'kr_name' => string '' (length=0)
      'sort' => int 10
      'status' => int 0
  3 => 
    array (size=7)
      'id' => int 2
      'pid' => int 0
      'name' => string '功能介绍' (length=12)
      'en_name' => string '' (length=0)
      'kr_name' => string '' (length=0)
      'sort' => int 9
      'status' => int 0
  4 => 
    array (size=7)
      'id' => int 3
      'pid' => int 0
      'name' => string '常见问题' (length=12)
      'en_name' => string '' (length=0)
      'kr_name' => string '' (length=0)
      'sort' => int 8
      'status' => int 0
DROP TABLE IF EXISTS `t_dict_help`;
CREATE TABLE `t_dict_help`  (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '分类id',
  `pid` int(11) NOT NULL COMMENT '分类父id(pid)',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '中文名称',
  `en_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '英文名称',
  `kr_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '韩文名称',
  `sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
  `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态:0=>未删除,1=>已删除',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '帮助中心分类字典表' ROW_FORMAT = Compact;

INSERT INTO `t_dict_help` VALUES (1, 0, '新手入门', '', '', 10, 0);
INSERT INTO `t_dict_help` VALUES (2, 0, '功能介绍', '', '', 9, 0);
INSERT INTO `t_dict_help` VALUES (3, 0, '常见问题', '', '', 8, 0);
INSERT INTO `t_dict_help` VALUES (4, 3, '怎么购买', '', '', 11, 0);
INSERT INTO `t_dict_help` VALUES (5, 3, '怎么续费', '', '', 12, 0);

2, 方法

$list =>  SELECT * FROM t_dict_help WHERE `status`= 0 GROUP BY `sort` DESC

 function list_to_tree($list, $pk = 'id', $pid = 'pid', $child = 'class_child', $root = 0)
    {
        // 创建Tree
        $tree = array();
        if (is_array($list)) {
            // 创建基于主键的数组引用
            $refer = array();
            foreach ($list as $key => $data) {
                $refer[$data[$pk]] = &$list[$key];
            }
            foreach ($list as $key1 => $data1) {
                // 判断是否存在parent
                $parentId = $data1[$pid];
                if ($parentId == $root) {
                    $tree[$data1[$pk]] = &$list[$key1];
                } else {
                    if (isset($refer[$parentId])) {
                        $parent = &$refer[$parentId];
                        $parent[$child][] = &$list[$key1];
                    }
                }
            }
        }
        return $tree;
    }

3, 结果

array (size=3)
  1 => 
    array (size=7)
      'id' => int 1
      'pid' => int 0
      'name' => string '新手入门' (length=12)
      'en_name' => string '' (length=0)
      'kr_name' => string '' (length=0)
      'sort' => int 10
      'status' => int 0
  2 => 
    array (size=7)
      'id' => int 2
      'pid' => int 0
      'name' => string '功能介绍' (length=12)
      'en_name' => string '' (length=0)
      'kr_name' => string '' (length=0)
      'sort' => int 9
      'status' => int 0
  3 => 
    array (size=8)
      'id' => int 3
      'pid' => int 0
      'name' => string '常见问题' (length=12)
      'en_name' => string '' (length=0)
      'kr_name' => string '' (length=0)
      'sort' => int 8
      'status' => int 0
      'class_child' => 
        array (size=2)
          0 => 
            array (size=7)
              'id' => int 5
              'pid' => int 3
              'name' => string '怎么续费' (length=12)
              'en_name' => string '' (length=0)
              'kr_name' => string '' (length=0)
              'sort' => int 12
              'status' => int 0
          1 => 
            array (size=7)
              'id' => int 4
              'pid' => int 3
              'name' => string '怎么购买' (length=12)
              'en_name' => string '' (length=0)
              'kr_name' => string '' (length=0)
              'sort' => int 11
              'status' => int 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值