Создание массива древовидного или подчиненного массива

Это данные в виде таблицы 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'
)
)

Какие-либо предложения

0

Решение

Вы можете сделать это следующим образом, но это не хорошо для производительности. Я не знаю точных требований, и вы используете это изделие. Так что я даю основную идею.

$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
}

Я надеюсь, что вы получите представление об этом.

0

Другие решения

Вы можете использовать код ниже для вашего решения, как я думал

$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);
0

По вопросам рекламы [email protected]