Создание массива, производящего родителей и детей записей - PullRequest
2 голосов
/ 18 мая 2011

Я не могу понять, как сделать родительский, дочерний (по идентификатору), который будет помещен в новый массив из массива (загружен базой данных).

Мне нужно, чтобы это было так:

+- Parent - ID: 4
|
+---- Child record  
+---- Child record  <-- these children have a parent_id of 4
+---- Child record
|
+- Parent - ID: 5
|
+---- Child record 
+---- Child record
+---- Child record
+---- Child record  <-- these children have a parent_id of 5
+---- Child record 
|
+- Parent - ID: 7
|
+---- Child record  
+---- Child record  <-- these children have a parent_id of 7
+---- Child record

И так далее, запись, загруженная из базы данных, выглядит так:

Array
(
    [0] => Array
        (
            [id] => 1
            [info] => this is a child, since sub is 1 and parent_id contains a number
            [sub] => 1
            [parent_id] => 4
        )

    [1] => Array
        (
            [id] => 2
            [info] => this is a parent, since sub is 0 and parent_id does not contain a number
            [sub] => 0
            [parent_id] => 
        )

    [2] => Array
        (
            [id] => 1
            [info] => this is a child, since sub is 1 and parent_id contains a number
            [sub] => 1
            [parent_id] => 4
        )

.... more records

SQL упорядочен в порядке возрастания строкой id, новым массивом, содержащим родителей и потомков записей, для чего он в основном предназначен.

1 Ответ

2 голосов
/ 18 мая 2011
foreach($dbArray as $row)
{
    if($row['parent_id'] != "")
    {
        $parentArray[$row['parent_id']][]['child'] = $row['info'];

    }
    else
    {
        $parentArray[$row['id']]['parent'] = $row['info'];
    }

}

это где родительский идентификатор является ключом для массива дочерней информации Получившийся массив будет выглядеть примерно так

Array(
/*parent id*/
    [0]=>Array(
       [parent] => //whatever info
       [0] => Array(
               [child]=> //whatever child info
                   )

           )
      )      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...