Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите пожалуйста составить массив рекурсивно

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
imedia
Отправлено: 19 Августа, 2016 - 18:54:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.  $result = $this->get_cat($resdata);
  3.   //Формирование массива с помощью рекурсивной функции
  4.  $navigation=$this->view_cat($result);
  5.  
  6. public function get_cat($menu) {
  7.  
  8.         if(!$menu) {
  9.             return NULL;
  10.         }
  11.         $arr_cat = array();
  12.         if(count($menu) != 0) {
  13.  
  14.             //В цикле формируем массив
  15.  
  16.             foreach ($menu as $key=>$row){
  17.  
  18.                 //Формируем массив где ключами являются адишники на родительские категории
  19.                 if(empty($arr_cat[$row['parent_id']])) {
  20.                     $arr_cat[$row['parent_id']] = array();
  21.                 }
  22.                 $arr_cat[$row['parent_id']][] = $row;
  23.             }
  24.  
  25.             //возвращаем массив
  26.             return $arr_cat;
  27.         }
  28.     }
  29.  


PHP:
скопировать код в буфер обмена
  1.  
  2.     public function view_cat($arr,$parent_id = 0,$navi=null) {
  3. //А здесь бы я написал такую функцию
  4.         //если в вновь пришедшем $navi массиве parent_id соответствует уже имеющемуся id
  5.         //то вложить этот вновь пришедший $navi в элемент ['pages'] имеющегося $this->nv
  6.  
  7. $this->nv[]=$navi;
  8.  
  9.         //Условия выхода из рекурсии
  10.         if(empty($arr[$parent_id])) {
  11.          return;
  12.         }
  13.  
  14.         //перебираем в цикле массив и выводим на экран
  15.         for($i = 0; $i < count($arr[$parent_id]);$i++) {
  16.  
  17.  
  18.             $navi['label']=$arr[$parent_id][$i]['category'];
  19.             $navi['name']=$arr[$parent_id][$i]['name_menu'];
  20.  
  21.             //рекурсия - проверяем нет ли дочерних категорий
  22.             $this->view_cat($arr,$arr[$parent_id][$i]['id'],$navi);
  23.  
  24.         }
  25.  
  26.  
  27.     }
  28.  


Сейчас я получаю последовательный вывод причем правильный если первая пара должна содержать вложенность то пара которая должна быть вложена выводится за ней но самой вложенности нет, помогите написать функцию которая будет вкладывать вновь полученный $navi в зависимости

(Отредактировано автором: 19 Августа, 2016 - 19:34:32)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB