首页 > 后端开发 > php教程 > 数据库查询结果构建多维数组解决办法

数据库查询结果构建多维数组解决办法

WBOY
发布: 2016-06-13 12:59:42
原创
1369 人浏览过

数据库查询结果构建多维数组
我想将前面数据库查询出来的结果构建一个多维数组,数据库查询出来的第一个结果对应第一层嵌套,第二个结果对应第二层嵌套,如何做,事先声明我是菜鸟,请多指点

<br />
// 查询变量<br />
			<br />
		$sql1 = "select remark,name from arp_careset where typegroup ='dissect-position' order by id"; <br />
		$rs1 = mysql_query($sql1); <br />
		<br />
		while($r1 = mysql_fetch_assoc($rs1)) <br />
		{ echo  $r1['name']; <br />
		<br />
		$sql = "select group_concat(name) as name from arp_careset where typegroup <>'dissect-position' and typegroup like '%".$r1["remark"]."%' order by id";<br />
		$rs = mysql_query($sql); <br />
		<br />
		while($r = mysql_fetch_array($rs)) <br />
		{ $ar = explode(',', $r['name']); <br />
		echo join(' ', $ar); <br />
		} }<br />
			//构建数组<br />
			<br />
$mem = array(<br />
	array<br />
	(<br />
		 lang_show(''),<br />
		array<br />
		(<br />
		// 嵌套开始<br />
			array(<br />
			lang_show('account_manager'),<br />
			//第二层嵌套<br />
				array(<br />
					'group_list.php,1',<br />
				)<br />
			//第二层嵌套结束	<br />
			),<br />
		// 嵌套结束<br />
		)  <br />
	),<br />
);		
登录后复制

------解决方案--------------------
你的数据组织给你的读出带来了很多不便
这样写
$rs = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, remark from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='dissect'");<br />
while($r = mysql_fetch_assoc($rs)) {<br />
  echo $r['name']. '<br />';<br />
  $rs1 = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, remark from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='$r[secondary]' and SUBSTRING_INDEX(typegroup,'-',-1) = '$r[remark]'");<br />
  while($r = mysql_fetch_assoc($rs1)) {<br />
    echo $r['name'] . ' ';<br />
  }<br />
  echo '<br />';<br />
}
登录后复制


体表
营养状况 分泌物 被毛 皮肤 眼/眼眶 四肢/尾巴 乳腺 外生殖器 肛门 
淋巴结
腋窝淋巴结 颈部淋巴结 腹股沟淋巴结 肺部淋巴结 肠系淋巴结 
头颈部
眼睑/角膜/瞳孔 牙齿/牙龈 耳 鼻 脑膜/全脑 颅骨 唾液腺 食管 气管 甲状腺 
胸部
胸壁 横膈/纵膈 心脏 主动脉弓 肺及支气管 
腹部
腹腔 肠系膜 脾脏 胰 肾脏 

------解决方案--------------------
为什么说数据组织的不好呢?
主分组 typegroup 包含了两个类别信息
而按“邻接列表算法”应该只包含一个类别信息
从你的数据上看,需要通过 typegroup、remark 两个字段来唯一确认一个表象的归属
这实际上就是“邻接列表算法”了

虽然现在可以用 SUBSTRING_INDEX 函数去拆分 typegroup 来得到类别信息
但 SUBSTRING_INDEX 函数是 mysql 专有的。如果因为某些原因,以后更换了数据库系统,那代码修改量就太大了

虽然你可以将拆分的工作交给 php 完成,但众多的 like 将降低查询效率
程序也显得比较臃肿
------解决方案--------------------
创建多维数组示意

$res = array(); //这是结果数组<br>
$rs = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, remark from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='dissect'");<br>
while($r = mysql_fetch_assoc($rs)) {<br>
  $tmp = array(); //初始化一个临时数组<br>
  $rs1 = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, remark from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='$r[secondary]' and SUBSTRING_INDEX(typegroup,'-',-1) = '$r[remark]'"); <div class="clear">
                 
              
              
        
            </div>
登录后复制
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板