Помогите с рекурсией плиз

217
13 сентября 2017, 14:22

Есть двумерный массив $categories, в котором содержатся массивы с ключами name, category_id и parent_id. Нужно как-то с помощью рекурсии создать новый массив $category_id, в который добавлять category_id до тех пор, пока parent_id не будет нулем. Здесь $this->data['link'] это ссылка на конечную подкатегорию, у которой может быть сколько угодно родительских категорий. Для этого собственно говоря и нужен массив $category_id, чтобы знать айдишники всех родительских категорий. Надеюсь что понятно объяснил...))

$category_id = [];
foreach ($categories as $category) {
        if ($category['name'] == $this->data['link']) {
            array_push($category_id, $category['category_id']);
            function find() {
                if ($category['parent_id'] != '0') {
                    foreach ($categories as $category) {
                        if ($category['parent_id'] == $category['category_id']) {
                            array_push($category_id, $category['category_id']);
                        }
                        find();
                    }
                }
            }
        }
    }
Answer 1

Всем спасибо, оказалось все намного проще: на этапе формирования ссылки я создавал массив со всеми родителями выбранной категории

$arr = explode(' > ', $this->data['link']);

соответственно для решения моего вопроса нужен был вот этот простой код:

 $category_id = [];
    for ($i = 0; $i < count($categories); $i++) {
        for ($j = 0; $j < count($arr); $j++) {
            if ($categories[$i]['name'] == $arr[$j]) {
                $category_id[] = $categories[$i]['category_id'];
            }
        }
    }
READ ALSO
Как разбить переменную на части в Smarty?

Как разбить переменную на части в Smarty?

На сайте используется шаблонизатор SmartyИмеется такой код:

305
Запись массива товаров в сессию

Запись массива товаров в сессию

Есть пост обработчик который принимает $id товараКак сделать массив в который будут добавляться товары в конец, а потом массив в сессию

222
PHP Fatal error: Call to a member function fetch_all() on a non-object in mysqli.php

PHP Fatal error: Call to a member function fetch_all() on a non-object in mysqli.php

Никак не могу понять где собака зарытаВот код mysqli

247
как связать html и php-файлы?

как связать html и php-файлы?

Добрый деньНедавно начал изучать html и php, и столкнулся с проблемой, которую никак не могу решить

274