Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с рекурсией массива
 
 автор: dirol   (13.05.2011 в 13:53)   письмо автору
 
 

есть масив комментариев



0- это номер комментария
1- это номер новости
2- это модуль
3- это дата
4- это номер юзера в базе
5- это номер пока пусто
6- это сам текст комментария
7- это статус комментария
8- это рейтинг комментария
9- это сколько проголосовало
10- это parentid родитель комментария
11- не так важно
12- не так важно
13- не так важно
14- не так важно
Array
(
    [0] => Array
        (
            [0] => 364491
            [1] => 54621
            [2] => news
            [3] => 1305116406
            [4] => 8111
            [5] => 
            [6] => Пользователи сочли комментарий некорректным
            [7] => 1
            [8] => -4
            [9] => 12
            [10] => 0
            [11] => notolerance
            [12] => 
            [13] => 
            [14] => 
        )

    [1] => Array
        (
            [0] => 364551
            [1] => 54621
            [2] => news
            [3] => 1305118666
            [4] => 6261
            [5] => 
            [6] => Зачем вы антисемитизмом?
            [7] => 1
            [8] => -1
            [9] => 7
            [10] => 0
            [11] => exmuslim
            [12] => 
            [13] => 
            [14] => 
        )

    [2] => Array
        (
            [0] => 364831
            [1] => 54621
            [2] => news
            [3] => 1305124225
            [4] => 6031
            [5] => 
            [6] => Да, В школе-то учился?
            [7] => 1
            [8] => 2
            [9] => 8
            [10] => 364491
            [11] => id-c34a5605
            [12] => 
            [13] => Almaz
            [14] => 
        )

    [3] => Array
        (
            [0] => 364931
            [1] => 54621
            [2] => news
            [3] => 1305129861
            [4] => 6581
            [5] => 
            [6] => "...Первая война была развязана сионистским государством в 1948 году, сразу после его создания."
            [7] => 1
            [8] => -2
            [9] => 12
            [10] => 0
            [11] => boroda
            [12] => 
            [13] => 
            [14] => 
        )

    [4] => Array
        (
            [0] => 364941
            [1] => 54621
            [2] => news
            [3] => 1305130121
            [4] => 6581
            [5] => 
            [6] => P.S ссылки с Википедии
            [7] => 1
            [8] => 0
            [9] => 0
            [10] => 0
            [11] => boroda
            [12] => 
            [13] => 
            [14] => 
        )

    [5] => Array
        (
            [0] => 365021
            [1] => 54621
            [2] => news
            [3] => 1305131366
            [4] => 8141
            [5] => 
            [6] => В начале в школе марксизм-ленинизм учил. Там об этом, конечно, не говорили.
            [7] => 1
            [8] => 0
            [9] => 4
            [10] => 364831
            [11] => Imanuel
            [12] => 
            [13] => 
            [14] => 
        )

    [6] => Array
        (
            [0] => 365041
            [1] => 54621
            [2] => news
            [3] => 1305131466
            [4] => 7051
            [5] => 
            [6] => шоб таки славить лулзы
            [7] => 1
            [8] => 0
            [9] => 2
            [10] => 364551
            [11] => Зульфикар
            [12] => 
            [13] => 
            [14] => 
        )

    [7] => Array
        (
            [0] => 365071
            [1] => 54621
            [2] => news
            [3] => 1305132337
            [4] => 8141
            [5] => 
            [6] => Вообще-то автор несёт чепуху.
            [7] => 1
            [8] => -3
            [9] => 10
            [10] => 0
            [11] => Imanuel
            [12] => 
            [13] => 
            [14] => 
        )

    [8] => Array
        (
            [0] => 365141
            [1] => 54621
            [2] => news
            [3] => 1305138567
            [4] => 6261
            [5] => 
            [6] => А вы таки?
            [7] => 1
            [8] => -3
            [9] => 5
            [10] => 365041
            [11] => exmuslim
            [12] => 
            [13] => 
            [14] => 
        )

    [9] => Array
        (
            [0] => 365161
            [1] => 54621
            [2] => news
            [3] => 1305141207
            [4] => 8151
            [5] => 
            [6] => Первое: Не понаехали а, вернулись!
            [7] => 1
            [8] => -4
            [9] => 6
            [10] => 364831
            [11] => d010968
            [12] => 
            [13] => 
            [14] => 
        )

    [10] => Array
        (
            [0] => 365181
            [1] => 54621
            [2] => news
            [3] => 1305142723
            [4] => 181
            [5] => 
            [6] => "Салтыков – Щедрин: СКАЗКА О РЕТИВОМ НАЧАЛЬНИКЕ 
            [7] => 1
            [8] => 1
            [9] => 1
            [10] => 365141
            [11] => tawheed
            [12] => 
            [13] => 
            [14] => 
        )

    [11] => Array
        (
            [0] => 365201
            [1] => 54621
            [2] => news
            [3] => 1305143376
            [4] => 7601
            [5] => 
            [6] => не могут быть антисемитами ни как?
            [7] => 1
            [8] => 2
            [9] => 2
            [10] => 364551
            [11] => LADEN
            [12] => 
            [13] => 
            [14] => 
        )

    [12] => Array
        (
            [0] => 365461
            [1] => 54621
            [2] => news
            [3] => 1305177359
            [4] => 6581
            [5] => 
            [6] => чушь какая-то...
            [7] => 1
            [8] => 0
            [9] => 0
            [10] => 365181
            [11] => boroda
            [12] => 
            [13] => 
            [14] => 
        )

    [13] => Array
        (
            [0] => 365511
            [1] => 54621
            [2] => news
            [3] => 1305178854
            [4] => 6661
            [5] => 
            [6] => Ну уж точно не вернулись.
            [7] => 1
            [8] => 0
            [9] => 0
            [10] => 365161
            [11] => id-6a07c6d7
            [12] => http://twitter.com/
            [13] => 
            [14] => 
        )

    [14] => Array
        (
            [0] => 365701
            [1] => 54621
            [2] => news
            [3] => 1305190147
            [4] => 8201
            [5] => 
            [6] => Пользователи сочли комментарий некорректным
            [7] => 1
            [8] => -5
            [9] => 5
            [10] => 0
            [11] => OmarOmar
            [12] => 
            [13] => 
            [14] => 
        )

    [15] => Array
        (
            [0] => 365891
            [1] => 54621
            [2] => news
            [3] => 1305195445
            [4] => 8201
            [5] => 
            [6] => Это не враньё, им больше ничего не остаётся.
            [7] => 1
            [8] => 0
            [9] => 0
            [10] => 0
            [11] => OmarOmar
            [12] => 
            [13] => 
            [14] => 
        )

    [16] => Array
        (
            [0] => 365921
            [1] => 54621
            [2] => news
            [3] => 1305196206
            [4] => 6421
            [5] => 
            [6] => ни чего не сможет, если его перестанут.
            [7] => 1
            [8] => 0
            [9] => 0
            [10] => 365891
            [11] => Rashad
            [12] => 
            [13] => 
            [14] => 
        )

    [17] => Array
        (
            [0] => 365951
            [1] => 54621
            [2] => news
            [3] => 1305197264
            [4] => 8201
            [5] => 
            [6] => То есть, с тем, что это маразм, ты согласен?:)
            [7] => 1
            [8] => 0
            [9] => 0
            [10] => 365921
            [11] => OmarOmar
            [12] => 
            [13] => 
            [14] => 
        )

    [18] => Array
        (
            [0] => 365971
            [1] => 54621
            [2] => news
            [3] => 1305197472
            [4] => 6421
            [5] => 
            [6] => Как интересно ты рассуждаешь.
            [7] => 1
            [8] => 0
            [9] => 2
            [10] => 365951
            [11] => Rashad_rus
            [12] => 
            [13] => 
            [14] => 
        )

    [19] => Array
        (
            [0] => 366011
            [1] => 54621
            [2] => news
            [3] => 1305198659
            [4] => 8201
            [5] => 
            [6] => Ой, кажется, я тебе написал то же самое:)
            [7] => 1
            [8] => -1
            [9] => 1
            [10] => 365971
            [11] => OmarOmar
            [12] => 
            [13] => 
            [14] => 
        )

)


помогите их вывести рекурсией




--menu1 
--menu2 
----menu2_1 
----menu2_2 
------menu2_2_1 
------menu2_2_2 
------menu2_2_3 
----menu2_3 
----menu2_4 
--menu3 
--menu4

смотрел тут http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=24736 но не получается их объядинить помогите пожалуйста

  Ответить  
 
 автор: dirol   (13.05.2011 в 14:13)   письмо автору
 
   для: dirol   (13.05.2011 в 13:53)
 

удалите плиз сообщение все разобрался

  Ответить  
 
 автор: deimand   (13.05.2011 в 14:21)   письмо автору
 
   для: dirol   (13.05.2011 в 13:53)
 

Чтобы комментарии выглядели в виде дерева, помимо номера комментария и номера новости, нужно писать в базу еще и родителя комментария. Если же комментарий это ответ не на комментарий, а на новость, то родитель должен быть 0. Тогда можно легко реализовать то что вы хотите.

Вы можете изменить структуру на древовидную, добавив id родителя (pid)? Что-то типа такого, лишние параметры я опустил за ненадобностью.

     $arr = array(
     array('id'=>1, 'pid'=>0, 'name'=>'Comment 1'),
      array('id'=>2, 'pid'=>1, 'name'=>'Comment 1.1'),
      array('id'=>3, 'pid'=>1, 'name'=>'Comment 1.2'),
      array('id'=>6, 'pid'=>1, 'name'=>'Comment 1.3'),
       array('id'=>4, 'pid'=>2, 'name'=>'Comment 1.1.1'),
       array('id'=>5, 'pid'=>2, 'name'=>'Comment 1.1.2'),
       array('id'=>7, 'pid'=>2, 'name'=>'Comment 1.1.3'),
     array('id'=>8, 'pid'=>0, 'name'=>'Comment 2'),
      array('id'=>12, 'pid'=>8, 'name'=>'Comment 2.1'),
      array('id'=>17, 'pid'=>8, 'name'=>'Comment 2.2'),
       array('id'=>13, 'pid'=>12, 'name'=>'Comment 2.1.1'),
        array('id'=>16, 'pid'=>13, 'name'=>'Comment 2.1.1.1'),
     array('id'=>9, 'pid'=>0, 'name'=>'Comment 3'),
      array('id'=>14, 'pid'=>9, 'name'=>'Comment 3.1'),
       array('id'=>15, 'pid'=>14, 'name'=>'Comment 3.1.1'),
     array('id'=>10, 'pid'=>0, 'name'=>'Comment 4'),
     array('id'=>11, 'pid'=>0, 'name'=>'Comment 5'),
     );


update: не заметил, что у вас уже есть id родителя, но раз проблема исчерпана....

  Ответить  
 
 автор: cheops   (13.05.2011 в 14:56)   письмо автору
 
   для: dirol   (13.05.2011 в 13:53)
 

Можно начать отталкиваться от следующего скрипта
<?php
  
function showposts($id 0$intent "")
  {
    global 
$arr;
    
$intent .= "&nbsp;&nbsp;&nbsp;";
    for(
$i 0$i count($arr); $i++)
    {
      if(
$arr[$i][10] == $id)
      {
        echo 
$intent.$arr[$i][6]."<br>";
        echo 
showposts($arr[$i][0], $intent);
      }
    }
  }
  echo 
showposts();
?>

PS Такие объемные листинги лучше прикрелять в виде файла.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования