powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как получить дочерние элементы древовидного массива
4 сообщений из 4, страница 1 из 1
Как получить дочерние элементы древовидного массива
    #39163850
Lord Kain
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток. Проблема в следующем:
Есть массив-дерево категорий.
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Array
(
    [1] => Array
        (
            [id] => 1
            [title] => Компьютеры, Ноутбуки, Планшеты
            [parent] => 0
            [leaf] => 1
            [childs] => Array
                (
                    [105187] => Array
                        (
                            [id] => 105187
                            [title] => Компьютеры
                            [parent] => 1
                            [leaf] => 1
                            [childs] => Array
                                (
                                    [104978] => Array
                                        (
                                            [id] => 104978
                                            [title] => Компьютеры Acer
                                            [parent] => 105187
                                            [leaf] => 1
                                        )


нужно в новый массив насобирать аидишники элементов не имеющих дочек. Написал рекурсию:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public function not_child($tree)
{
     $catlist=array();
     foreach($tree as $one)
        {
          if(!isset($one['childs']) )
            {
                array_push($catlist,$one['id']);
                //echo $one['id'].'<br>';
                
            }  
          else
            {
               $this->not_child($one['childs']);
            }  
        }

return $catlist;
echo '<pre>'.print_r($catlist,true).'</pre>'; 
}


По окончании работы функции выводится пустой массив, хотя в процессе работы, к примеру там где echo $one['id'].'<br>'; элементы выводятся. Подскажите где я ошибся.
...
Рейтинг: 0 / 0
Как получить дочерние элементы древовидного массива
    #39164032
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public function not_child($tree)
{
     $catlist=array();
     foreach($tree as $one)
        {
          if(!isset($one['childs']) )
            {
                array_push($catlist,$one['id']);
                //echo $one['id'].'<br>';
                
            }  
          else
            {
               $catlist = array_merge($catlist,$this->not_child($one['childs']));
            }  
        }

return $catlist;
echo '<pre>'.print_r($catlist,true).'</pre>'; 
}
...
Рейтинг: 0 / 0
Как получить дочерние элементы древовидного массива
    #39164034
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://php.net/manual/ru/function.array-push.php

Замечание: Вместо использования array_push() для добавления одного элемента в массив, лучше использовать $array[] = , потому что в этом случае не происходит затрат на вызов функции.
...
Рейтинг: 0 / 0
Как получить дочерние элементы древовидного массива
    #39164062
Lord Kain
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ренат, Спасибо большое, разобрался.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как получить дочерние элементы древовидного массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]