За последние 24 часа нас посетили 15157 программистов и 1671 робот. Сейчас ищут 978 программистов ...

зациклить foreach

Тема в разделе "PHP для новичков", создана пользователем cosan, 24 авг 2016.

  1. cosan

    cosan Новичок

    С нами с:
    28 янв 2014
    Сообщения:
    6
    Симпатии:
    0
    здравствуйте!

    есть массив res1s с вложенными элементами меню —

    res1s

    Код (Text):
    1. id=1 parent=0
    2. id=2 parent=1
    3. id=3 parent=2
    4. id=4 parent=3
    5. ...
    6. id=5 parent=0
    7. id=6 parent=5
    на входе для фильтрации цикл получает конкретный ID ($ID ), напр.

    PHP:
    1. $ID = 1
    PHP:
    1. $values = array();
    2. foreach ($res1s as $res1) {
    3.    if ($res1->parent == $ID) {
    4.    $values[] = $res1->id;
    5.      foreach ($res1s as $res2) {
    6.        if ($res2->parent == $res1->id) {
    7.          $values[] = $res2->id;
    8.        }
    9.      }
    10.    }
    11. }
    задача — получить всех потомков $ID на всех уровнях вложенности
    в вышеприведённом примере потомки определяются только на два уровня ниже
    т.к глубина вложенности неизвестна, нужно как-то написать функцию на вход которой подавать массив res1s + $ID так чтобы функция делала обход покуда находятся подходящие записи в массиве

    в данном случае, при

    $ID = 1

    в $values должно получится array(2, 3, 4)

    спасибо!
     
  2. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    google php рекурсия
     
    askanim нравится это.
  3. cosan

    cosan Новичок

    С нами с:
    28 янв 2014
    Сообщения:
    6
    Симпатии:
    0
  4. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    ну сделали за тебя и ты рад. так и не поняв как это работает.
     
  5. cosan

    cosan Новичок

    С нами с:
    28 янв 2014
    Сообщения:
    6
    Симпатии:
    0
    maxycwebber, ты так считаешь потому что таких "..рад. так и не поняв как это работает" большинство

    я прекрасно понял всю функцию, когда смотришь на готовое решение, то всё и понятно. а чтобы самому до такого додуматся - голову ломаешь не зная как быть
     
  6. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    ты ее ща повторишь и забудешь, а поломав голову, хрен когда забудешь.
     
  7. cosan

    cosan Новичок

    С нами с:
    28 янв 2014
    Сообщения:
    6
    Симпатии:
    0
    ну так я её и ломал с полтора часа
     
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Давай не будем пустого болабольства!
    В двух словах, что такое рекурсия?