DROP TABLE IF EXISTS `menu0910`;
CREATE TABLE `menu0910` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`menu` varchar(50) COLLATE utf8_unicode_ci DEFAULT '',
`parentid` bigint(20) DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -- ----------------------------
-- Records of menu0910
-- ----------------------------
INSERT INTO `menu0910` VALUES ('', '1-1', '');
INSERT INTO `menu0910` VALUES ('', '1-2', '');
INSERT INTO `menu0910` VALUES ('', '1-3', '');
INSERT INTO `menu0910` VALUES ('', '1-1-1', '');
INSERT INTO `menu0910` VALUES ('', '1-1-2', '');
INSERT INTO `menu0910` VALUES ('', '1-1-3', '');
INSERT INTO `menu0910` VALUES ('', '1-2-1', '');
INSERT INTO `menu0910` VALUES ('', '1-2-2', '');
INSERT INTO `menu0910` VALUES ('', '1-2-3', '');
INSERT INTO `menu0910` VALUES ('', '1-3-1', '');
INSERT INTO `menu0910` VALUES ('', '1-3-2', '');
INSERT INTO `menu0910` VALUES ('', '1-3-3', '');
INSERT INTO `menu0910` VALUES ('', '1-1-1-1', '');
INSERT INTO `menu0910` VALUES ('', '1-1-1-2', '');
INSERT INTO `menu0910` VALUES ('', '1-1-1-3', '');
INSERT INTO `menu0910` VALUES ('', '1-1-2-1', '');
INSERT INTO `menu0910` VALUES ('', '1-1-2-2', '');
INSERT INTO `menu0910` VALUES ('', '1-1-2-3', '');
INSERT INTO `menu0910` VALUES ('', '1-1-3-1', '');
INSERT INTO `menu0910` VALUES ('', '1-1-3-2', '');
INSERT INTO `menu0910` VALUES ('', '1-1-3-3', '');
INSERT INTO `menu0910` VALUES ('', '1-2-1-1', '');
INSERT INTO `menu0910` VALUES ('', '1-2-1-2', '');
INSERT INTO `menu0910` VALUES ('', '1-2-1-3', '');
INSERT INTO `menu0910` VALUES ('', '1-2-2-1', '');
INSERT INTO `menu0910` VALUES ('', '1-2-2-2', '');
INSERT INTO `menu0910` VALUES ('', '1-2-2-3', '');
INSERT INTO `menu0910` VALUES ('', '1-2-3-1', '');
INSERT INTO `menu0910` VALUES ('', '1-2-3-2', '');
INSERT INTO `menu0910` VALUES ('', '1-2-3-3', '');
INSERT INTO `menu0910` VALUES ('', '1-3-1-1', '');
INSERT INTO `menu0910` VALUES ('', '1-3-1-2', '');
INSERT INTO `menu0910` VALUES ('', '1-3-1-3', '');
INSERT INTO `menu0910` VALUES ('', '1-3-2-1', '');
INSERT INTO `menu0910` VALUES ('', '1-3-2-2', '');
INSERT INTO `menu0910` VALUES ('', '1-3-2-3', '');
INSERT INTO `menu0910` VALUES ('', '1-3-3-1', '');
INSERT INTO `menu0910` VALUES ('', '1-3-3-2', '');
INSERT INTO `menu0910` VALUES ('', '1-3-3-3', '');
<?php
$mysqli = new mysqli('localhost', 'root', '', 'w'); if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
} $menulist = array();
/* Select queries return a resultset */
if ($result = $mysqli->query("SELECT * FROM menu0910")) {
printf("Select returned %d rows.\n", $result->num_rows); /* free result set */ while ($row = $result->fetch_assoc()) {
$menulist[] = $row;
} $result->close();
} var_dump($menulist); //筛选出3级idlist->2级->1级
$idlist_3 = array();
$idlist_2 = array();
$idlist_1 = array();
$idlist_1_2_3 = array();
$idlist_1_2 = array();
foreach($menulist as $menu)
{
$idlist_1_2_3[] = $menu['id'];
}
var_dump($idlist_1_2_3);
foreach($menulist as $menu)
{
if($menu['parentid']!=0)$idlist_1_2[] = $menu['parentid'];
}
$idlist_1_2=array_unique($idlist_1_2);
var_dump($idlist_1_2);
foreach($idlist_1_2_3 as $id)
{
if(!in_array($id,$idlist_1_2)) $idlist_3[] = $id;
}
var_dump($idlist_3);
foreach($idlist_3 as $id)
{
$idlist_2[] = get_parentid($id);
}
$idlist_2=array_unique($idlist_2);
var_dump($idlist_2); foreach($idlist_2 as $id)
{
$idlist_1[] = get_parentid($id);
}
$idlist_1=array_unique($idlist_1);
var_dump($idlist_1); function get_parentid($id)
{
global $menulist;
foreach($menulist as $one)
{
if($one['id']==$id) RETURN $one['parentid'];
}
} $res = array();
foreach($idlist_1 as $one)
{
$res[] = $one;
}
var_dump($res); $w = 0;
foreach($res as $id1)
{
$tmp = array();
foreach($idlist_2 as $id2)
{
if(get_parentid($id2) == $id1)$tmp[]=$id2;
}
$res[]=$tmp;
}
var_dump($res);

不遗留问题-menu数据拼装的更多相关文章

  1. 不遗留问题-menu数据拼装-2

    $res = array(); foreach($idlist_1 as $id1) { $tmp = array(); $tmp1 = array(); $tmp1[] = $id1; foreac ...

  2. 小程序开发笔记【二】,抽奖结果json数据拼装bug解决

    抽奖结果数据json格式数据拼接bug,如下图,只发布了两个奖项,每个奖项设置2个奖品,但最后拼接数据的时候出现3个奖项 json数据格式如下 "luckyResult":[ { ...

  3. MySQL将查询出来的一组数据拼装成一个字符串

    1 前言 由于项目中有一个需求,需要把当日当周的排行榜数据归档,以便后期查询和发放奖励.然而发现,mysql的变量只能存一个变量值,然后如果要储存一条记录,可以使用CONCAT_WS,如果要储存多条记 ...

  4. mysql将查询出来的一列数据拼装成一个字符串

    使用GROUP_CONCAT函数. SELECT GROUP_CONCAT(查询的字段 separator ',') FROM table

  5. 将相关数据拼成所需JSON数据

    参考: http://www.cnblogs.com/shuilangyizu/p/6019561.html 有时候我们需要将一些数据拼装成所需要格式的JSON,可以使用如下方法,本人觉得还是比较方便 ...

  6. poi导出excel,表头数据动态拼装

    /* * 第一步:拼装表头和数据 */ // 放多个sheet的集合 List<Map<String,Object>> datas = new ArrayList<Map ...

  7. java递归算法实现拼装树形JSON数据

    有时候页面需要使用jQuery easy ui中的combotree,需要给combotree提供一个JSON数据,使用如下方法(递归)实现(下面是dao层的实现层): /** * 根据表名和父id拼 ...

  8. 【Raspberry Pi】新入手的Raspberry Pi3拼装日志

    一.概述 2016年暑假某宝入手Raspberry Pi 3,装机清单: 树莓派主板 亚克力外壳 小风扇 散热片 30G SD card 螺丝若干颗 因机型问题,可能与你的机器有微小差异 二.装机过程 ...

  9. Ibatis动态拼装sql,常用标签总结及举栗子。

    今天得到项目经理一项任务,就是拼装sql,第一次见到,不是太懂,赶紧回来睡一觉再说,由于这次的项目orm使用的是ibatis框架,所以需要使用动态拼装sql,或者是ognl语言,这门语言不是专属于ib ...

随机推荐

  1. Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) B. Bear and Three Musketeers 枚举

                                          B. Bear and Three Musketeers                                   ...

  2. TabLayout

    效果图: 标题和fragment联动效果已经封装好了,非常方便 <android.support.design.widget.TabLayout android:id="@+id/ta ...

  3. 【转】kylin优化

    转自: http://www.bitstech.net/2016/01/04/kylin-olap/ http://www.csdn.net/article/2015-11-27/2826343 ht ...

  4. hdu2159

    #include<bits/stdc++.h> #define MAX 155 using namespace std; struct Node { int exp; int pat; } ...

  5. Spring的自定义标签

    当Spring拿到一个元素时首先要做的是根据命名空间进行解析,如果是默认的命名空间,则使用parseDefaultElement方法进行元素解析,否则使用parseCustom Element方法进行 ...

  6. 简单几何(直线与线段相交) POJ 1039 Pipe

    题目传送门 题意:一根管道,有光源从入口发射,问光源最远到达的地方. 分析:黑书上的例题,解法是枚举任意的一个上顶点和一个下顶点(优化后),组成直线,如果直线与所有竖直线段有交点,则表示能穿过管道. ...

  7. 计算几何 2013年山东省赛 A Rescue The Princess

    题目传送门 /* 已知一向量为(x , y) 则将它旋转θ后的坐标为(x*cosθ- y * sinθ , y*cosθ + x * sinθ) 应用到本题,x变为(xb - xa), y变为(yb ...

  8. BZOJ1035 : [ZJOI2008]Risk

    首先要将这个图连通,方法是通过扫描线+set求出每个连通块最高的点上方的第一条边,然后向交点连边. 然后把边拆成两条双向边,每次找到一条没走过的边,找到极角排序后它的反向边的后继,直到回到这条边.根据 ...

  9. Lambda表达式可以被转换为委托类型

    void Main() { //向Users类中增加两人; List<Users> user=new List<Users>{ new Users{ID=1,Name=&quo ...

  10. 移动端JS 触摸事件基础

    一.手机上的触摸事件   基本事件:   touchstart   //手指刚接触屏幕时触发 touchmove    //手指在屏幕上移动时触发 touchend     //手指从屏幕上移开时触发 ...