Сохранить бинарное дерево из базы в массив

187
19 декабря 2016, 19:39

Имею такую таблицу:

id, id_user, left_user, right_user
id - просто ID в таблице
id_user - ID пользователя
left_user - человек под id_user слева
right_user - человек по id_user справа

Как это перенести из базы данных в массив PHP, чтобы разбить по уровням? Я пробовал сделать так:

public function createTree($id_user) {
        $data = [];
        $user = Users::model()->findByAttributes(array('id_user' => $id_user));
        if ($user !== null) {
            $data[] = $this->createTree($user->left_user);
            $data[] = $this->createTree($user->right_user);
        }
        return $data;
    }

Но массив возвращается с одним элементом, и не получается разбивать по уровням. Что я делаю не так?

Answer 1

Насколько я вижу из кода переменная $data существует только в функции createTree поэтому вы получаете только результат последнего добавления. Переменная должна быть свойством класса $this->data или быть объявленной глобальной global $data.

READ ALSO
Защита админ панели

Защита админ панели

Пишу проект с админ панелью на Laravel 52

261
Заменить все теги на p

Заменить все теги на p

Имеется HTML-разметка в текстовой переменнойКак можно заменить все теги в этой разметке на тег p? Есть ли стандартные функции PHP для этого? strip_tags()...

195
Как правильно вызвать функцию в php 2 раза?

Как правильно вызвать функцию в php 2 раза?

Код ресайзит(resize) картинки и сохранят в папкуНужно вызвать функцию ресайза, но как-то красиво, чтоб не дублировать код

197
json - вывести только нужные данные

json - вывести только нужные данные

Как пропустить одно (2,3) значение при получении json?

231