Intereting Posts
Отправка «Запросов приложений» нескольким получателям с использованием Graph API Как установить абсолютный путь include в PHP? Привет, У меня есть запрос с базой данных Почему var_dump не работает с объектами DomDocument, а print ($ dom-> saveHTML ())? Переменная конкатенированная строка запроса mysql отлично работает в phpMyAdmin, но не PHP в скрипте Имя идентификатора миграции Laravel 5 слишком длинное PHP-конструктор _construct не работает Кэш в памяти с истечением LRU Насколько полезен PHP CodeSniffer? Обеспечение соблюдения норм стандартов в целом? Как организовать просмотр страны / города / города в MVC Удалите белый фон с изображения и сделайте его прозрачным с помощью PHP PHP SQLSRV Сортировка с параметром подготовленного заявления Предпочтительно ли назначать переменную POST фактической переменной? Laravel Eloquent – Attach vs Sync Как создать таблицу столбцов php 2 со значениями из базы данных?

MYSQL Parent Child Same Table; PHP-гнездо детей внутри родителей как многомерный массив

MYSQL возвращает массив, как показано ниже. Я использую столбец: 'id_parent', чтобы самостоятельно ссылаться на таблицу для создания иерархии. Таким образом, запись с «id» из 2 может быть родителем любой записи с «id_parent» из 2 и так далее.

Array ( [1] => Array ( [id] => 2 [name] => About [id_parent] => NULL ) [2] => Array ( [id] => 4 [name] => About Child [id_parent] => 2 ) [3] => Array ( [id] => 5 [name] => About Child's Child [id_parent] => 4 ) ) 

Как я могу вложить дочерние элементы в массив в своем родительском массиве

 Array ( [1] => Array ( [id] => 2 [name] => About [id_parent] => [children] => Array ( [id] => 4 [name] => About Child [id_parent] => 2 [children] => Array ( [id] => 5 [name] => About Child's Child [id_parent] => 4 ) ) ) ) 

Ссылки, с преимуществами, которые не имеют значения (дочерние узлы могут быть представлены перед их родителями):

  $tree = array('NULL' => array('children' => array())); foreach($array as $item){ if(isset($tree[$item['id']])){ $tree[$item['id']] = array_merge($tree[$item['id']],$item); } else { $tree[$item['id']] = $item; } $parentid = is_null($item['id_parent']) ? 'NULL' : $item['id_parent']; if(!isset($tree[$parentid])) $tree[$parentid] = array('children' => array()); //this & is where the magic happens: any alteration to $tree[$item['id'] // will reflect in the item $tree[$parentid]['children'] as they are the same // variable. For instance, adding a child to $tree[$item['id']]['children] // will be seen in // $tree[$parentid]['children'][<whatever index $item['id'] has>]['children] $tree[$parentid]['children'][] = &$tree[$item['id']]; } $result = $tree['NULL']['children']; //always unset references unset($tree);