PHP: $category = new CategoryGame(); $listCategory = $category -> outTree($category->category_array, 0); Да, после массив идет в метод outTree, где первый аргумент пытаешься в дальнейшем использовать как ключ. Что за хренью ты занимаешься ? --- Добавлено --- Очевидно же вывода в методе нету пишешь - не зная что пишешь
в дальнейшем аргумент нельзя использовать как ключ? что так нельзя делать, как правильно будет? Буду стараться.
Доброй ночи, нашел код, применил его, вроде все работает нормально но есть но подкатегории не выводятся. Спойлер: модель дерева PHP: class CategoryGame extends Model { public $categories = []; # публик переменная для списка всех категорий public $categoriesTree = []; # публик переменная для списка категорий в форме дерева public function __construct() { parent::__construct(); # взываем родительский конструктор Model $this -> categories = $this -> getCategories(); $this -> categoriesTree = $this -> getFullTree(); } /* * Список всех категорий */ private function getCategories(){ $arr_cat = []; $result = $this -> db -> sel("SELECT * FROM `game_categories`"); foreach($result AS $category){ $arr_cat[$category['category_id']] = $category; } return $arr_cat; } /* * Список категорий в форме дерева */ private function getFullTree() { $tree = [] ; $categories = $this -> categories; foreach($categories as $id => &$node) { if(!$node['parent_id']){ $tree[$id] = &$node ; }else{ $categories[$node['parent_id']]['children'][$id] = &$node ; } } return $tree; } } вызываю в контроллере 2 метода Спойлер: контроллер PHP: public function indexAction() { # Список категорий игровых для левого меню $category = new CategoryGame(); $categories = $category -> categories; # список всех категорий $tree = $category -> categoriesTree; # список категорий в форме дерева } и теперь пытаюсь в шаблоне вывести дерево Спойлер: шаблон HTML: <?php foreach ($tree as $key => $value): echo '<pre>';var_dump($key);echo '</pre>'; ?> <div class="list-group-item list-group-item-action category-group-title" data-target="#collapse<?php echo $value['category_id']; ?>" data-toggle="collapse"> <h5><?php echo $value['category_name']; ?></h5> </div> <div class="collapse" id="collapse<?php echo $value['category_id']; ?>"> <a style="color: red;" class="list-group-item list-group-item-action" href="/category/<?php echo $value['category_id']; ?>"> { <?php echo $value['category_name']; ?> } </a> </div> <?php endforeach; ?> что могу сказать в массиве $tree храниться дерево категорий и подкатегорий, а если быть точнее то хранится уже список в виде дерева, вот этот список. Спойлер: список PHP: array(7) { [1]=> array(5) { ["category_id"]=> string(1) "1" ["parent_id"]=> string(1) "0" ["category_name"]=> string(14) "WORLD OF TANKS" ["category_status"]=> string(1) "1" ["children"]=> array(4) { [8]=> array(4) { ["category_id"]=> string(1) "8" ["parent_id"]=> string(1) "1" ["category_name"]=> string(5) "wot-1" ["category_status"]=> string(1) "1" } [9]=> array(4) { ["category_id"]=> string(1) "9" ["parent_id"]=> string(1) "1" ["category_name"]=> string(5) "wot-2" ["category_status"]=> string(1) "1" } [10]=> array(4) { ["category_id"]=> string(2) "10" ["parent_id"]=> string(1) "1" ["category_name"]=> string(5) "wot-3" ["category_status"]=> string(1) "1" } [11]=> array(4) { ["category_id"]=> string(2) "11" ["parent_id"]=> string(1) "1" ["category_name"]=> string(5) "wot-5" ["category_status"]=> string(1) "1" } } } [2]=> array(5) { ["category_id"]=> string(1) "2" ["parent_id"]=> string(1) "0" ["category_name"]=> string(17) "WORLD OF WARSHIPS" ["category_status"]=> string(1) "1" ["children"]=> array(2) { [18]=> array(4) { ["category_id"]=> string(2) "18" ["parent_id"]=> string(1) "2" ["category_name"]=> string(9) "warship-1" ["category_status"]=> string(1) "1" } [19]=> array(4) { ["category_id"]=> string(2) "19" ["parent_id"]=> string(1) "2" ["category_name"]=> string(9) "warship-2" ["category_status"]=> string(1) "1" } } } [3]=> array(4) { ["category_id"]=> string(1) "3" ["parent_id"]=> string(1) "0" ["category_name"]=> string(14) "ИГРЫ STEAM" ["category_status"]=> string(1) "1" } [4]=> array(5) { ["category_id"]=> string(1) "4" ["parent_id"]=> string(1) "0" ["category_name"]=> string(6) "DOTA 2" ["category_status"]=> string(1) "1" ["children"]=> array(3) { [12]=> array(4) { ["category_id"]=> string(2) "12" ["parent_id"]=> string(1) "4" ["category_name"]=> string(6) "dota-1" ["category_status"]=> string(1) "1" } [13]=> array(4) { ["category_id"]=> string(2) "13" ["parent_id"]=> string(1) "4" ["category_name"]=> string(6) "dota-2" ["category_status"]=> string(1) "1" } [14]=> array(4) { ["category_id"]=> string(2) "14" ["parent_id"]=> string(1) "4" ["category_name"]=> string(6) "dota-3" ["category_status"]=> string(1) "1" } } } [5]=> array(4) { ["category_id"]=> string(1) "5" ["parent_id"]=> string(1) "0" ["category_name"]=> string(11) "ROYAL QUEST" ["category_status"]=> string(1) "1" } [6]=> array(5) { ["category_id"]=> string(1) "6" ["parent_id"]=> string(1) "0" ["category_name"]=> string(4) "CSGO" ["category_status"]=> string(1) "1" ["children"]=> array(3) { [15]=> array(4) { ["category_id"]=> string(2) "15" ["parent_id"]=> string(1) "6" ["category_name"]=> string(4) "CS-1" ["category_status"]=> string(1) "1" } [16]=> array(4) { ["category_id"]=> string(2) "16" ["parent_id"]=> string(1) "6" ["category_name"]=> string(4) "CS-2" ["category_status"]=> string(1) "1" } [17]=> array(4) { ["category_id"]=> string(2) "17" ["parent_id"]=> string(1) "6" ["category_name"]=> string(4) "CS-3" ["category_status"]=> string(1) "1" } } } [7]=> array(5) { ["category_id"]=> string(1) "7" ["parent_id"]=> string(1) "0" ["category_name"]=> string(12) "ДРУГИЕ" ["category_status"]=> string(1) "1" ["children"]=> array(3) { [20]=> array(4) { ["category_id"]=> string(2) "20" ["parent_id"]=> string(1) "7" ["category_name"]=> string(4) "dr-1" ["category_status"]=> string(1) "1" } [21]=> array(4) { ["category_id"]=> string(2) "21" ["parent_id"]=> string(1) "7" ["category_name"]=> string(4) "dr-2" ["category_status"]=> string(1) "1" } [22]=> array(4) { ["category_id"]=> string(2) "22" ["parent_id"]=> string(1) "7" ["category_name"]=> string(4) "dr-3" ["category_status"]=> string(1) "1" } } } } этот список я пытался вывести в шаблоне чтобы он так же в виде дерева был, в данном случае у меня выводится всего лишь категории, при клике на категорию должен разворачиваются список подкатегорий а у меня дублируется категория вместо вывода подкатегории. Мои догадки, создать цикл опять же в цикле для вывода подкатегорий, или же правильно подставить из существующего дерева подкатегории, только как я уже не соображу, у меня проблемы с логикой. Кто поможет мне? спасибо.
ах да уже как несколько дней назад понял как из конструкт вытащить переменную в которой хранятся данные. например: PHP: class Test { public = $categories = []; public function __construct() { $this -> categories = $this -> getCategories(); } public function getCategories() { return $arr = [1,2,3]; } } чтобы получить нам в другом классе переменную $categories нам нужно создать экземпляр класса и потом вызвать переменную через специальный символ. PHP: class Testing { public ActionIndex() { $c = new Test(); $b = $c -> categories; var_dump( $b ); } } таким образом мы вытащили переменную и ее данные.