20,359
社区成员
发帖
与我相关
我的任务
分享
$big_category=mysql_query(select * from table_a where 大类);
foreach($big_category as $key=>$val) {
$small_category[$key]=mysql_query(select * from table_b where $val);
}
/*
大概是这样子实现了。
先找出大类的,再根据大类搜小类。
也可以利用一个sql递归实现了。但这样复杂。
*/
---------- php调试 ----------
Array
(
[1] => Array
(
[zone_id] => 1
[zone_name] => 山东
[child] => Array
(
[0] => Array
(
[zone_id] => 5
[zone_pid] => 1
[zone_name] => 东营
)
[1] => Array
(
[zone_id] => 6
[zone_pid] => 1
[zone_name] => 济南
)
[2] => Array
(
[zone_id] => 7
[zone_pid] => 1
[zone_name] => 青岛
)
[3] => Array
(
[zone_id] => 8
[zone_pid] => 1
[zone_name] => 聊城
)
[4] => Array
(
[zone_id] => 9
[zone_pid] => 1
[zone_name] => 威海
)
)
)
[2] => Array
(
[zone_id] => 2
[zone_name] => 山西
)
[3] => Array
(
[zone_id] => 3
[zone_name] => 河南
)
[4] => Array
(
[zone_id] => 4
[zone_name] => 河北
)
)
<?php
//数据库表 zone,字段zone_id 区域序号,zone_pid 父区域序号,zone_name 区域名称
//假设两层区域,一级区域的父节点序号为-1,二级的为其父节点序号
//直接使用数组模拟从数据库中查询
$data[] = array('zone_id' => 1,'zone_pid' => -1,'zone_name' => '山东');
$data[] = array('zone_id' => 2,'zone_pid' => -1,'zone_name' => '山西');
$data[] = array('zone_id' => 3,'zone_pid' => -1,'zone_name' => '河南');
$data[] = array('zone_id' => 4,'zone_pid' => -1,'zone_name' => '河北');
$data[] = array('zone_id' => 5,'zone_pid' => 1,'zone_name' => '东营');
$data[] = array('zone_id' => 6,'zone_pid' => 1,'zone_name' => '济南');
$data[] = array('zone_id' => 7,'zone_pid' => 1,'zone_name' => '青岛');
$data[] = array('zone_id' => 8,'zone_pid' => 1,'zone_name' => '聊城');
$data[] = array('zone_id' => 9,'zone_pid' => 1,'zone_name' => '威海');
$list = array();
foreach ($data as $zone)
{
if ($zone['zone_pid'] == -1)
{
$list[$zone['zone_id']]['zone_id'] = $zone['zone_id'];
$list[$zone['zone_id']]['zone_name'] = $zone['zone_name'];
}
else
{
$list[$zone['zone_pid']]['child'][] = $zone;
}
}
print_r($list);
?>