Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP для начинающих

Войти
Регистрация
Восстановить пароль
 
1482909
1 / 1 / 0
Регистрация: 22.12.2014
Сообщений: 49
#1

Рекурсивная запись в массив - PHP

23.07.2015, 09:39. Просмотров 475. Ответов 0
Метки нет (Все метки)

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

Пытаюсь решить такую задачу, представим что есть товар в интернет магазине Т1, он находится в категорий К3, данная категория лежит в категорий К2, а К2 в К1 то есть:

ROOT
K1
K2
k3
T1

Нужно для каждого товара получить список его родительских категорий.

На данный момент решение такое:

PHP
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
foreach ($array_item_id as $key) {
    $result = get_parent($DBH, $key['id']); // $key - id товара
    var_dump($result);
}
 
function get_parent($DBH, $id) { 
 
    $SELECT_PARENT = $DBH->prepare("SELECT parent FROM `modx_site_content` where id =?");
    $SELECT_PARENT->execute(array($id));
    $parent_id = $SELECT_PARENT->fetch();
    
    if($id != 85) { // 85 это ROOT
        $SELECT_PARENT = $DBH->prepare("SELECT parent FROM `modx_site_content` where id =?");
        $SELECT_PARENT->execute(array($id));
        $parent_id = $SELECT_PARENT->fetch();
        $parent[$id] = get_parent($DBH, $parent_id[0]);
        return $parent;
    }   
    
}
 
// результат такой:
array(1) {
  [1000]=>
  array(1) {
    [2150]=>
    array(1) {
      [2021]=>
      array(1) {
        [2018]=>
        NULL
      }
    }
  }
}
array(1) {
  [1001]=>
  array(1) {
    [2106]=>
    array(1) {
      [2022]=>
      array(1) {
        [2018]=>
        NULL
      }
    }
  }
}
Дело в том что я знаю что что то не так, будьте добры скажите мне как лучше сделать

Добавлено через 14 минут
Нужно что то типа 1001,2106,2022,2018, а у меня массив, а в нем куча массивов, или как его преобразовать?

Добавлено через 11 часов 18 минут
Если кому интересно вот решение:

PHP
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
26
27
28
29
30
31
32
33
34
function get_hierarchy($DBH, $cat_id, $hierarchy = array()) {
    if ($cat_id == 85)
        return $hierarchy; 
    $SELECT_PARENT = $DBH->prepare("SELECT parent FROM `modx_site_content` where id =?");
    $SELECT_PARENT->execute(array($cat_id));
    $data = $SELECT_PARENT->fetch();
    
    $res = get_hierarchy($DBH, $data['parent'], $hierarchy);
    $hierarchy += $res;
    $hierarchy[] = $data['parent'];
    return $hierarchy;
}
 
// Результат:
array(4) {
  [0]=>
  string(2) "85"
  [1]=>
  string(4) "2018"
  [2]=>
  string(4) "2021"
  [3]=>
  string(4) "2150"
}
array(4) {
  [0]=>
  string(2) "85"
  [1]=>
  string(4) "2018"
  [2]=>
  string(4) "2022"
  [3]=>
  string(4) "2106"
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2015, 09:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Рекурсивная запись в массив (PHP):

Запись из БД в массив array() - PHP
Возможно ли как-то сделать так что бы взять запись из ячейки таблицы и вложить ее в массив array() пример записи в ячейке:...

Запись абзацев из текста в массив - PHP
Есть ли какая-нибудь функция, чтобы выделить все абзацы из текста и записать их в массив?

Запись данных в массив из input - PHP
Имеется форма: <form action="#" name="form1"> <input type="text"><br><br> <input type="text"><br><br> ...

Запись значений в массив и вывод - PHP
Здравствуйте, уважаемые форумчане! Я с толкнулся с такой проблемой, что не знаю, как записать значения в массив, так как опыта в php...

Поиск и запись в массив файлов с определенным расширением - PHP
Есть исходники Java проекта, нужно отыскать все файлы .java и записать пути к ним в массив, для дальнейшей обработки... Весь день думал,...

Запись в массив чисел из текстовых полей и их вывод - PHP
Здравствуйте, я уже писал две темы, но вопрос так и остался не решённым. Через цикл выводится некоторое число тестовых полей (как ячейки...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 09:39
Привет! Вот еще темы с ответами:

рекурсивная функция - PHP
Готовлюсь к собеседованию и прохожу всякие вопросы которые там будут, наткнулся с "рекурсивная функция" и не могу понять как она работает,...

Рекурсивная функция - PHP
Помогите исправить мою ошибку в функции. Код: <?php function open_read($open){ $dir = $open; $files = scandir($dir); ...

Как разрешить запись в файл, по умолчанию запись не разрешена - PHP
Помогите! НАчинающий php - программист. Как разрешить запись в файл, по умолчанию запись не разрешена. Вот что пишет: Warning:...

1C 8.x Создание и запись объекта одновременно с подчиненными (рекурсивная запись) - 1С
Всех приветствую Есть справочник {Контрагенты}, есть подчиненный справочник {Договора}, При создании контрагента автоматически...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru