创建树视图数组或子数组


Creat treeview array or sub array

这些是mysql表中的数据

Table A (Tasks)

task_id | name  | description
-----------------------------
  1     | soccer|  fora
-----------------------------
  2     | sussam|  forb
-----------------------------
  3     | sosssi|  forc
-----------------------------
  4     | sillly|  ford

表B里程碑

mile_id | name   | task_id
------------------
  1     | task1mi |   1 
------------------
  2     | task2mi |   1
-------------------
  3     | task3mi |   3

我希望使一个树视图数组,类似于每个任务作为父里程碑作为任务id的子数组。

print_r()函数应该返回什么(php在mysql查询后期望的输出)

   array(          
          name=>'soccer',
          description =>'fora'
          task_id=>array(
                  mile_id=>'1',
                  name=>'task1mi'                   
             )
          )
任何建议

您可以这样做,但这对性能不利。我不知道你们具体的要求和使用的网络。所以我给出了基本的想法。

$sqlparent = "select * from tasks";// get your task details from database.
$parentData = $sqlparent;// result from sql function.
foreach($parentData as $key=>$value)
{
   $sql = "select * from Milestones where task_id='".$value['task_id']."'";// find the Milestones of the task
$milestonesResult = mysql_featch_array($sql); // run sql and get data from database it is giving you single record you need to create loop here. as i don`t know what are you using for PHP.
$value['milestoneslist'] = $milestonesResult; //task_id=>array( here you can not use task_id => array as it is already there. if you do it it will over-right the task_id
}

您可以使用下面的代码为您的解决方案,因为我认为

$sql = "select table_b.*,table_a.name as aname, table_a.description as description as aname from table_b left join table_a on table_b.task_id=table_a.task_id"
$result = mysql_query($sql);
//based on above query result you will get array on mysql_fatch_assoc
$result_array = array();
while($result = mysql_fatch_assoc($result)){
    $tmp_arr = array();
    $tmp_arr['mile_id'] =  $result['mile_id'];
    $tmp_arr['name'] =  $result['name'];
    $result_array[$result['task_id']]['name'] = $result['aname'];
    $result_array[$result['task_id']]['description'] = $result['description'];
    $result_array[$result['task_id']]['task_id'][] = $tmp_arr;
}

$result_array = array_values($result_array);
print_r($result_array);