求好的方法~?

php中文网
发布: 2016-06-23 13:46:13
原创
874人浏览过

数据如:

INSERT INTO `vm_nav` (`id`, `ctype`, `cid`, `name`, `ifshow`, `vieworder`, `opennew`, `url`, `type`) VALUES(1, NULL, 0, 'index', 0, 1, 0, '', 'nav'),(2, NULL, 0, 'product', 1, 2, 0, '', 'nav'),(3, NULL, 0, 'member', 1, 3, 0, '', 'nav'),(4, NULL, 0, 'guide', 1, 4, 0, '', 'nav'),(5, NULL, 0, 'kehu', 1, 5, 0, '', 'nav'),(6, NULL, 0, 'about', 1, 6, 0, '', 'nav'),(7, NULL, 0, 'tehui', 1, 7, 0, '', 'nav'),(8, NULL, 3, 'member_index', 1, 1, 0, '', 'nav'),(9, NULL, 3, 'member_info', 1, 2, 0, '', 'nav');
登录后复制


求这种数据
array(8) {  [0]=>  array(6) {    ["id"]=>    string(1) "2"    ["name"]=>    string(12) "product"    ["opennew"]=>    string(1) "0"    ["url"]=>    string(0) ""    ["ctype"]=>    NULL    ["cid"]=>    string(1) "0"  }  [1]=>  array(6) {    ["id"]=>    string(1) "3"    ["name"]=>    string(18) "member"    ["opennew"]=>    string(1) "0"    ["url"]=>    string(0) ""    ["ctype"]=>    NULL    ["cid"]=>    string(1) "0"  }  [2]=>  array(6) {    ["id"]=>    string(1) "8"    ["name"]=>    string(12) "member_index"    ["opennew"]=>    string(1) "0"    ["url"]=>    string(0) ""    ["ctype"]=>    NULL    ["cid"]=>    string(1) "3"  }  [3]=>  array(6) {    ["id"]=>    string(1) "9"    ["name"]=>    string(12) "member_info"    ["opennew"]=>    string(1) "0"    ["url"]=>    string(0) ""    ["ctype"]=>    NULL    ["cid"]=>    string(1) "3"  }  [4]=>  array(6) {    ["id"]=>    string(1) "4"    ["name"]=>    string(12) "guide"    ["opennew"]=>    string(1) "0"    ["url"]=>    string(0) ""    ["ctype"]=>    NULL    ["cid"]=>    string(1) "0"  }  [5]=>  array(6) {    ["id"]=>    string(1) "5"    ["name"]=>    string(12) "kehu"    ["opennew"]=>    string(1) "0"    ["url"]=>    string(0) ""    ["ctype"]=>    NULL    ["cid"]=>    string(1) "0"  }  [6]=>  array(6) {    ["id"]=>    string(1) "6"    ["name"]=>    string(12) "about"    ["opennew"]=>    string(1) "0"    ["url"]=>    string(0) ""    ["ctype"]=>    NULL    ["cid"]=>    string(1) "0"  }  [7]=>  array(6) {    ["id"]=>    string(1) "7"    ["name"]=>    string(12) "tehui"    ["opennew"]=>    string(1) "0"    ["url"]=>    string(0) ""    ["ctype"]=>    NULL    ["cid"]=>    string(1) "0"  }}
登录后复制


我用了一个笨办法:先foreach吧cid  插入到一个son成员里 然后再一个foreach 放到其后面,描述的不清楚,代码如下:

function nav_list(){    $navlist = get_navigator();    sort($navlist['nav']);   //$navlist['nav']  就是取出所有数据 ,上面用sort排了下序    foreach($navlist['nav'] as $k=>$v)    {        if($v['cid'] != 0)        {            //插入到一个son成员里            $l[$v['cid']]['son'][] = $v;                    }else{        	$l[$v['id']] = $v;        }    }    foreach($l as $k=>$v){        if($v['son']){            //消除son成员            $tmp[] = array_diff_key($v,array('son'=>''));            foreach($v['son'] as $key=>$val){                //再一个foreach 放到其后面                $tmp[] = $val;            }        }else{            $tmp[] = $v;        }    }    return $tmp;}
登录后复制


~ 怎么样会快捷一点 ~??? 求解

法语写作助手
法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31
查看详情 法语写作助手

回复讨论(解决方案)

if(cid == id)
这条cid数据就放在id数据后面    说不清楚了~~~~

select id, ctype, cid, name, ifshow, vieworder, opennew, url, type from vm_nav where ifshow and cid=0unionselect cid as id, ctype, cid, name, ifshow, vieworder, opennew, url, type from vm_nav where ifshow and cid>0order by id
登录后复制

一位数组转化二维?

select id, ctype, cid, name, ifshow, vieworder, opennew, url, type from vm_nav where ifshow and cid=0unionselect cid as id, ctype, cid, name, ifshow, vieworder, opennew, url, type from vm_nav where ifshow and cid>0order by id
登录后复制


这样取出来的数据 cid在父id前面:如
INSERT INTO `vm_nav` (`id`, `ctype`, `cid`, `name`, `ifshow`, `vieworder`, `opennew`, `url`, `type`) VALUES(2, NULL, 0, 'product', 1, 2, 0, '', 'nav'),(3, NULL, 3, 'member_info', 1, 2, 0, '', 'nav'),(3, NULL, 3, 'member_index', 1, 1, 0, '', 'nav'),(3, NULL, 0, 'member', 1, 3, 0, '', 'nav'),(4, NULL, 0, 'guide', 1, 4, 0, '', 'nav'),(5, NULL, 0, 'kehu', 1, 5, 0, '', 'nav'),(6, NULL, 0, 'about', 1, 6, 0, '', 'nav'),(7, NULL, 0, 'tehui', 1, 7, 0, '', 'nav');
登录后复制

好像是我吧事情搞复杂了~   ~ 

一位数组转化二维?


嗯 ,但 一维数组中如果有cid则需要排在cid后面,cid可以理解为父节点的下标,根节点的cid=0~~~   大概就这个意思 ~

不应该的,排序键相同时是按自然顺序的

可带上 cid 排序
order by id, cid

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号