Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> зациклить foreach, foreach, цикл, функция, вложенность
amename  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 16
Пользователь №: 28314
На форуме: 5 лет, 5 месяцев, 28 дней
Карма:




здравствуйте!

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

res1s

id=1 parent=0
id=2 parent=1
id=3 parent=2
id=4 parent=3
...
id=5 parent=0
id=6 parent=5


на входе для фильтрации цикл получает конкретный ID ($ID ), напр.

$ID = 1


$values = array();
foreach ($res1s as $res1) {
if ($res1->parent == $ID) {
$values[] = $res1->id;
foreach ($res1s as $res2) {
if ($res2->parent == $res1->id) {
$values[] = $res2->id;
}
}
}
}



задача — получить всех потомков $ID на всех уровнях вложенности
в вышеприведённом примере потомки определяются только на два уровня ниже
т.к глубина вложенности неизвестна, нужно как-то написать функцию на вход которой подавать массив res1s + $ID так чтобы функция делала обход покуда находятся подходящие записи в массиве

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

$ID = 1

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

спасибо!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 266
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 25 дней
Карма: 31




https://glot.io/snippets/ehslo7lhmt
Допили сам если че.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
amename  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 16
Пользователь №: 28314
На форуме: 5 лет, 5 месяцев, 28 дней
Карма:





Цитата
Допили сам если че.


)) ! спасибище!!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TMake  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3106
Пользователь №: 16333
На форуме: 7 лет, 11 месяцев, 22 дня
Карма: 58




amename посмотри лучше в сторону nestedset, так тебе не придется играться с циклами.
По твоему вопросу:


function getRes($array $parent)
{
$result = [];
if (!empty($array)) {
foreach ($array as $item) {
if ($item->parent == $parent) {
$result[] = $item->id;
$result = array_merge_recursive($result, getRes($array, $item->parent));
}
}
}


return $result;
}
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
amename  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 16
Пользователь №: 28314
На форуме: 5 лет, 5 месяцев, 28 дней
Карма:




TMake, и тебе спасибо!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса