Heim > Backend-Entwicklung > PHP-Tutorial > 数据库查询结果构建多维数组解决办法

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

WBOY
Freigeben: 2016-06-13 12:59:42
Original
1369 Leute haben es durchsucht

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

<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 />
);		
Nach dem Login kopieren

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


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

------解决方案--------------------
为什么说数据组织的不好呢?
主分组 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>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage