我想将前面数据库查询出来的结果构建一个多维数组,数据库查询出来的第一个结果对应第一层嵌套,第二个结果对应第二层嵌套,如何做,事先声明我是菜鸟,请多指点// 查询变量
$sql1 = "select re,name from arp_careset where typegroup ='dissect-position' order by id";
$rs1 = mysql_query($sql1);
while($r1 = mysql_fetch_assoc($rs1))
{ echo $r1['name'];
$sql = "select group_concat(name) as name from arp_careset where typegroup <>'dissect-position' and typegroup like '%".$r1["re"]."%' order by id";
$rs = mysql_query($sql);
while($r = mysql_fetch_array($rs))
{ $ar = explode(',', $r['name']);
echo join(' ', $ar);
} }
//构建数组
$mem = array(
array
(
lang_show(''),
array
(
// 嵌套开始
array(
lang_show('account_manager'),
//第二层嵌套
array(
'group_list.php,1',
)
//第二层嵌套结束
),
// 嵌套结束
)
),
);
$sql1 = "select re,name from arp_careset where typegroup ='dissect-position' order by id";
$rs1 = mysql_query($sql1);
while($r1 = mysql_fetch_assoc($rs1))
{ echo $r1['name'];
$sql = "select group_concat(name) as name from arp_careset where typegroup <>'dissect-position' and typegroup like '%".$r1["re"]."%' order by id";
$rs = mysql_query($sql);
while($r = mysql_fetch_array($rs))
{ $ar = explode(',', $r['name']);
echo join(' ', $ar);
} }
//构建数组
$mem = array(
array
(
lang_show(''),
array
(
// 嵌套开始
array(
lang_show('account_manager'),
//第二层嵌套
array(
'group_list.php,1',
)
//第二层嵌套结束
),
// 嵌套结束
)
),
);
这样写$rs = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, re from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='dissect'");
while($r = mysql_fetch_assoc($rs)) {
echo $r['name']. '<br />';
$rs1 = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, re from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='$r[secondary]' and SUBSTRING_INDEX(typegroup,'-',-1) = '$r[re]'");
while($r = mysql_fetch_assoc($rs1)) {
echo $r['name'] . ' ';
}
echo '<br />';
}体表
营养状况 分泌物 被毛 皮肤 眼/眼眶 四肢/尾巴 乳腺 外生殖器 肛门
淋巴结
腋窝淋巴结 颈部淋巴结 腹股沟淋巴结 肺部淋巴结 肠系淋巴结
头颈部
眼睑/角膜/瞳孔 牙齿/牙龈 耳 鼻 脑膜/全脑 颅骨 唾液腺 食管 气管 甲状腺
胸部
胸壁 横膈/纵膈 心脏 主动脉弓 肺及支气管
腹部
腹腔 肠系膜 脾脏 胰 肾脏
主分组 typegroup 包含了两个类别信息
而按“邻接列表算法”应该只包含一个类别信息
从你的数据上看,需要通过 typegroup、re 两个字段来唯一确认一个表象的归属
这实际上就是“邻接列表算法”了虽然现在可以用 SUBSTRING_INDEX 函数去拆分 typegroup 来得到类别信息
但 SUBSTRING_INDEX 函数是 mysql 专有的。如果因为某些原因,以后更换了数据库系统,那代码修改量就太大了虽然你可以将拆分的工作交给 php 完成,但众多的 like 将降低查询效率
程序也显得比较臃肿
$res = array(); //这是结果数组
$rs = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, re from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='dissect'");
while($r = mysql_fetch_assoc($rs)) {
$tmp = array(); //初始化一个临时数组
$rs1 = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, re from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='$r[secondary]' and SUBSTRING_INDEX(typegroup,'-',-1) = '$r[re]'");
while($r1 = mysql_fetch_assoc($rs1)) {
$tmp[] = $r1['name']; //将数据加入临时数组
}
$res[] = $tmp; //将临时数组归入结果数组
}
每处存放什么内容,自己决定
$mem = array(
array
(
lang_show(''),
array
(
// 嵌套开始
array(
'体表',
//第二层嵌套
array(
'营养状况',
'分泌物',
'被毛',
'皮肤',
'眼/眼眶',
'四肢/尾巴',
'乳腺',
'外生殖器',
'肛门',
)
//第二层嵌套结束
),
// 嵌套结束
// 嵌套开始
array(
'淋巴结',
//第二层嵌套
array(
'腋窝淋巴结',
'颈部淋巴结',
'腹股沟淋巴结',
'肺部淋巴结',
'肠系淋巴结',
)
//第二层嵌套结束
),
// 嵌套结束
)
),
);
$res[] = $tmp; //将临时数组归入结果数组
改为
$res[] = array$r['name'], $tmp);循环结束后
$mem = array(
array(
lang_show(''),
$res
)
);
//第二层嵌套 array( '营养状况,6', '分泌物,7', '被毛,8', '皮肤,9', '眼/眼眶,10', '四肢/尾巴,11', '乳腺,12', '外生殖器,13', '肛门,14', ) //第二层嵌套结束