Конечно скорее всего это я делаю что то неправильно )
Функция отлично выводит(структурирует) категории (id) и подкатегории(under_id) с неограниченным количеством вложений из массива.
Но теперь мне нужно записать всё структурированное меню в новый массив $category.
На месте где сейчас запись $category[$count] = array (.. и т.п. был echo который отлично и по порядку всё выводил.
Но в массив он записывает только категории первого уровня(under_id - 0)! Почему так происходит и как это исправить?
PHP:
скопировать код в буфер обмена
// Показывает все объекты массива по его номеру подкатегории (under_id) function isset_under_id($cat_array, $this_under_id) { foreach ($cat_array as $row) { $id = $row['id']; // id объекта $under_id = $row['under_id']; // подкатегория объекта $name = $row['name']; // название объекта if ($under_id == $this_under_id) { return true; } } } // Показывает все объекты массива по его номеру подкатегории (under_id) function menu($cat_array, $this_under_id) { $s = 1; foreach ($cat_array as $row) { $id = $row['id']; // id объекта $under_id = $row['under_id']; // подкатегория объекта $name = $row['name']; // название объекта if ($under_id == $this_under_id) { static $i = -1; if ($s == 1) {$i++; $s = 2;} static $count = 0; $count++; // номер текущего вывода // echo $count,'lvl- ',$i,'',$name,'- ',$id,'- ',$under_id,'<br>'; $categories[$count] = array( 'lvl' => $i, 'id' => $id, 'under_id' => $under_id, 'name' => $name ); if (!isset($cat_array[$count])) {echo'la fin'; return $categories; } // если в массиве существует такой under_id -> вызови функцию заново if (isset_under_id($cat_array, $id)) { menu($cat_array, $id);$i = 0; } else { $n = 0; } } } } echo '<pre>'; echo '</pre>';
Выводит:
PHP:
скопировать код в буфер обмена
( ( [lvl] => 0 [id] => 4 [under_id] => 0 [name] => Мальчики ) ( [lvl] => 0 [id] => 5 [under_id] => 0 [name] => Девочки ) ( [lvl] => 0 [id] => 6 [under_id] => 0 [name] => Киборги ) ) если делаю обычное echo выводит: 1lvl- 0Мальчики- 4- 0 2lvl- 1Саша- 1- 4 3lvl- 1Вова- 3- 4 4lvl- 2Любит Машу- 8- 3 5lvl- 0Девочки- 5- 0 6lvl- 1Маша- 2- 5 7lvl- 2Не любит никого- 9- 2 8lvl- 0Киборги- 6- 0 la fin
Как исправить? Что не так?
|