Это данные в виде таблицы MySQL.
Таблица A (Задачи)
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
Я ищу создание массива дерева, что-то вроде для каждой задачи в качестве родительского этапа в качестве дочернего массива идентификатора задачи.
Что должна вернуть функция 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);