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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章