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

WBOY
Release: 2016-06-13 12:59:42
Original
1342 people have browsed it

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

<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 />
);		
Copy after login

------解决方案--------------------
你的数据组织给你的读出带来了很多不便
这样写
$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 />
}
Copy after login


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

------解决方案--------------------
为什么说数据组织的不好呢?
主分组 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>
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!