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]   

> Без описания
imediasun
Отправлено: 21 Января, 2014 - 00:08:18
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


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

[+][+][+][+][+]


Подскажите пожалуйста как сделать из этого массива
Array
(
[0] => Array
(
[id] => 1
[id_store] => 3
[id_level] => 1
[name] => Главная
[parent] => 0
)

[1] => Array
(
[id] => 2
[id_store] => 3
[id_level] => 1
[name] => Товары и услуги
[parent] => 0
)

[2] => Array
(
[id] => 3
[id_store] => 3
[id_level] => 2
[name] => Дубленки
[parent] => 2
)

[3] => Array
(
[id] => 4
[id_store] => 3
[id_level] => 2
[name] => Кожанные куртки
[parent] => 2
)

[4] => Array
(
[id] => 5
[id_store] => 3
[id_level] => 3
[name] => Женские дубленки
[parent] => 3
)

[5] => Array
(
[id] => 6
[id_store] => 3
[id_level] => 3
[name] => Женские куртки
[parent] => 4
)

)



Как из него получить следующий массив



Array
(
[Главная] => 0

[Товары и услуги] => Array
(
[Дубленки]=>Array
(
[0]=>ЖенскиеДубленки,
[1]=>Мужские дубленки
)

[Кожанные куртки]=>Array
(
[0]=>Женские Куртки,
[1]=>Мужские куртки
)
)
)

(Отредактировано автором: 23 Января, 2014 - 23:51:02)

 
 Top
esterio
Отправлено: 21 Января, 2014 - 00:17:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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





Програмирования явно не ваше
 
 Top
imediasun
Отправлено: 21 Января, 2014 - 00:21:41
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


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

[+][+][+][+][+]


Помогите логики не хватает, хотя согласен может и не совсем своим делом занимаюсь, но что уж поделаешь уже два года в пхп а логика всегда трудно дается, спасибо
 
 Top
Fetis
Отправлено: 21 Января, 2014 - 07:20:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 153
Дата рег-ции: Дек. 2012  
Откуда: Киров, Россия


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




imediasun пишет:
Помогите логики не хватает, хотя согласен может и не совсем своим делом занимаюсь, но что уж поделаешь уже два года в пхп а логика всегда трудно дается, спасибо



Не используй mysql в создании меню Улыбка

(Отредактировано автором: 21 Января, 2014 - 07:21:08)

 
 Top
imediasun
Отправлено: 21 Января, 2014 - 09:15:00
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


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

[+][+][+][+][+]


почему, а как тогда если надо меню через админку создавать динамически
 
 Top
IllusionMH
Отправлено: 21 Января, 2014 - 15:02:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




imediasun, по первых хватит 1 таблицы. Просто нужно добавить колонку с родителем.
Потом получаете верхний уровень, записываете в свой массив. Получаете объекты у которых родитель объект из первого уровня, пихаете в свой вложенный массив.
 
 Top
imediasun
Отправлено: 21 Января, 2014 - 22:41:33
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


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

[+][+][+][+][+]


Помогите пожалуйста разобраться с этим вопросом

(Отредактировано автором: 23 Января, 2014 - 21:10:15)

 
 Top
Panoptik
Отправлено: 22 Января, 2014 - 00:08:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




ну про sub_sub_menu - это уже печально (
а если добавится еще один уровень вложенности - будет sub_sub_sub_... ?

короче копайте в сторону рекурсии, проблему в данном вашем коде решить нельзя, это результат, а нужна причина
а она ваших функциях с дивными названиями [sub_]menu

вобщем если у вас в базе данных примерно такая структура таблицы menu
id, title, parent_id

у корневого элемента parent_id = 0

вообще вложенные запросы в цикле здесь не приветствуются, но думаю вам подойдет

PHP:
скопировать код в буфер обмена
  1. function get_menu($parentId = 0) {
  2.   $sql = "SELECT id, title, parent_id FROM menu WHERE parent_id = $parentId";
  3.  // с помощью вашего метода доступа к базе достаете результат запроса в ассоц массив
  4.  // что-то вроде этого
  5.  $results = $db->query($sql)->fetch_assoc();
  6.  // все элементы меню будут храниться в этом массиве
  7.  $menu = array();
  8.  foreach($results as $r) {
  9.    $menu[$r['id']] = array(
  10.      'title' => $r['title'],
  11.      'items' => get_menu($r['id']),
  12.    );
  13.  }
  14.  return $menu;
  15. }
  16.  
  17.  
  18. print_r(get_menu);


такой результат будет более осмысленным чем тот что вы описывали


-----
Just do it
 
 Top
imediasun
Отправлено: 23 Января, 2014 - 20:59:24
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


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

[+][+][+][+][+]


Мелкий
Извините забыл что тема уже открыта но вопрос так и не решен, помогите пожалуйста я изменил задание на корректное
Panoptik

Я немного изменил вопрос темы потому наверное Ваш ответ не подойдет уже, я поместил все данные в одну таблицу как IllusionMH сказал и вывел массив теперь мне необходимо его верно сгруппировать, поможете?

(Отредактировано автором: 23 Января, 2014 - 22:07:10)

 
 Top
imediasun
Отправлено: 23 Января, 2014 - 23:19:50
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


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

[+][+][+][+][+]


Вычитал про рекурсию, но пока не могу понять как ее правильно осуществить в моем случае, вот некоторые мысли но это не работает, помогите пожалуйста те для кого это очень просто, раньше и вы ведь этого не понимали.Это конечно просто каркас чего то но в этом направлении необходим хороший пример чтобы все понять как оно работает.
Приведенный пример от Panoptic верный но не в моем случае, я же хочу и ключи массива задать динамически
PHP:
скопировать код в буфер обмена
  1.  
  2.          function Menu($parent_id, $level = null)
  3.         {
  4.         $level++;
  5.                                        
  6.         $query = "SELECT * FROM main_menu WHERE parent = $parent_id";
  7.         $result = mysql_query($query);
  8.                                        
  9.         if (mysql_num_rows($result) > 0) {
  10.                                                
  11.         foreach ($result as $key=>$value) {
  12.         ????????????
  13.                                                                                  
  14.         Menu(??????);
  15.         $level--;
  16.         }
  17.                                                
  18. }
  19. }
  20.  
  21. // Вызов ф-ии
  22. Menu(1);
  23.  

(Отредактировано автором: 23 Января, 2014 - 23:20:13)

 
 Top
IllusionMH
Отправлено: 24 Января, 2014 - 00:26:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




imediasun, передавайте еще и parent_name. И зачем делать такие непонятные ключи?
Делайте для всех такую структуру
PHP:
скопировать код в буфер обмена
  1.   0 => array(
  2.     'title' => 'Название'
  3.     'children' => array(
  4.       //...
  5.   )
  6. );

потом проверяете наличие и непустоту соответствующего массива детей и выводите во вложенном списке.

P.S. Дата рег-ции: Авг. 2012 Пора уже самостоятельно хоть что-то делать, а не лезть по каждому вопросу на форум.

(Отредактировано автором: 24 Января, 2014 - 00:33:09)

 
 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