Intereting Posts
Как я могу удалить данные: часть изображения из строки base64 любого типа изображения в PHP php array_merge без стирания значений? Потребление службы .NET SOAP с PHP с аутентификацией Отправка массива значений флажка с помощью AngularJS & Laravel 4. Флажки не проверяются (визуально) Вызов undefined метода App :: uses () – cakephp – CakeEmail PHPExcel: ошибка «Невозможно прочитать файл» Преобразование Excel в PDF (.xlsx в .pdf) Как сохранить данные POST через ajax-запрос после перенаправления .htaccess? Как получить разное соединение DBAL в Symfony2 Doctrine2 Как обновить APC на сервере сообщества Zend (необходимо для Symfony2)? MySQL SELECT * WHERE timestamp = СЕГОДНЯ WordPress ~ как отображать более одной диаграммы Google на странице? Как выполнить WP_Query с несколькими аргументами? Как перебрать объект Yii CActiveDataProvider? Найти, какой int был минимальным в PHP Пользовательская проверка в PHP Codeigniter – требуется одно из двух полей

Попытка получить потоковые / вложенные комментарии в PHP

У меня есть данные в таблице MySQL (так называемая информация), например:

 _______________________
 id |  текст |  родитель |
 1 |  a |  NULL |
 2 |  b |  1 |
 3 |  c |  1 |
 4 |  d |  2 |
 -----------------------

(id автоматически увеличивается)

Я хочу отображать эти данные на PHP, например:

 > a (ID 1)
 >> b (ID 2)
 >>> d (ID 4, родительский 2) 
 >> c (ID 3)

Я пытался использовать разные методы, но я не могу заставить их работать в любом случае. Я знаю, что мне нужна рекурсивная функция, но как мне это сделать? Достаточно простого указателя; Благодарю.

    Related of "Попытка получить потоковые / вложенные комментарии в PHP"

    Ну, как вы получаете таблицу:

    $parents = array(); $children = array(); while($row = ...){ if($row['parent'] == null){ $parents[] = array ('id' => $row['id'], 'text' => $row['text']) } else{ if(!isset($children[$row['parent']])) $children[$row['parent']] = array(); $children[$row['parent']][] = array ('id' => $row['id'], 'text' => $row['text']) } } 

    Итерация с использованием этой функции:

     function displayChildren($array, $id, $char = ">"){ foreach($array as $ch){ if($ch['id'] == $id) echo "$char {$ch['text']} (ID {$ch['id']})" } }