Intereting Posts
Реализация архитектуры и дизайн для системы уведомлений с использованием socket.io node.js и входящих сообщений Центральный вход с SAML и создание сайта для работы в качестве поставщика удостоверений PHP – Расширение против библиотеки против класса – когда и почему Отображать значения массива с тем же ключом вместе Оператор приоритета 'OR' и '=' в PHP array_multisort с поддержкой ассоциации числовых индексов FPDF – Как я могу использовать разные страницы разных размеров? Как можно изменить всю часть тела документа xml, загруженного в php через simplexml? Когда использовать подготовленные запросы PDO. Ошибка mysql_real_escape Показать bbcode на html странице с помощью php stripos возвращает false, когда используются специальные символы Поддержка jquery Передача-Кодировка: chunked? как У PHP есть токен аутентификации, такой как Rails? php preg_replace regex заменить строку между двумя строками Почему следующие коды показывают ошибку неподдерживаемых операндов?

Создание многомерного вложенного массива из результата MySQL с повторяющимися значениями (PHP)

В настоящее время я извлекаю данные из нашей базы данных с помощью функции PDO fetchAll (). Таким образом, каждая строка результатов запроса помещает массив в следующую структуру:

Array ( [0] => Array ( [MenuId] => mmnlinlm08l6r7e8ju53n1f58 [MenuName] => Main Menu [SectionId] => eq44ip4y7qqexzqd7kjsdwh5p [SubmenuName] => Salads & Appetizers [ItemName] => Tomato Salad [Description] => Cucumbers, peppers, scallions and cured tuna [Price] => $7.00) [1] => Array ( [MenuId] => mmnlinlm08l6r7e8ju53n1f58 [MenuName] => Main Menu [SectionId] => xlkadsj92laada9082lkas [SubmenuName] => Entrees [ItemName] => Portabello Carpaccio [Description] => Dried tomatoes, pin nuts, mahon cheese [Prices] => $18.00) ) ...etc. 

Для объяснения причин я хотел бы, чтобы массив отображался во вложенной структуре без дубликатов значений:

 Array ( [MenuName] => Main Menu [MenuId] => mmnlinlm08l6r7e8ju53n1f58 [Section] => Array ( [SectionId] => eq44ip4y7qqexzqd7kjsdwh5p [SubmenuName] => Salads & Appetizers [Items] => Array ( [ItemName] => Tomato Salad [Description] => Cucumbers, peppers, scallions and cured tuna [Prices] => Array ( [PriceId] => xksjslkajiak1 [Price] => $7.00) ) [SectionId] => xlkadsj92laada9082lkas [SubmenuName] => Entrees [Items] => Array ( [ItemName] => Portabello Carpaccio [Description] => Dried tomatoes, pin nuts, mahon cheese [Prices] => Array ( [PriceId => alkadh29189s09 [Price] = $8.00) ) ) ) 

Будучи программистом n00b, в последний день я пытаюсь понять, как создать этот новый многомерный массив. Похоже, мне, возможно, придется использовать пару вложенных foreach-заявлений и ссылок, но мне было трудно заставить что-то работать.

Кто-нибудь знает, как я могу это сделать?

Related of "Создание многомерного вложенного массива из результата MySQL с повторяющимися значениями (PHP)"

Это похоже на то, что вы ищете

 $array = array() ; while ($row = PDO::fetchAll()) // Replace with relevant Information { $section = array(); $items = array(); $prices = array(); if(!array_key_exists($row['MenuId'], $array)) { $array[$row['MenuId']] = array(); $array[$row['MenuId']]['MenuName'] = $row['MenuName'] ; $array[$row['MenuId']]['MenuId'] = $row['MenuId'] ; $array[$row['MenuId']]['Section'] = array(); } if(!array_key_exists($row['SectionId'], $array[$row['MenuId']]['Section'])) { $array[$row['MenuId']]['Section'][$row['SectionId']] = array(); $array[$row['MenuId']]['Section'][$row['SectionId']]['SectionId'] = $row['SectionId'] ; $array[$row['MenuId']]['Section'][$row['SectionId']]['SubmenuName'] = $row['SubmenuName'] ; $array[$row['MenuId']]['Section'][$row['SectionId']]['Items'] = array() ; } $items['ItemName'] = $row['ItemName'] ; $items['Description'] = $row['Description'] ; $prices['PriceId'] = $row['PriceId'] ; $prices['Price'] = $row['Price'] ; $items['Prices'] = $prices ; $section['Items'] = $items ; $array[$row['MenuId']]['Section'][$row['SectionId']]['Items'][] = $items ; } var_dump($array); 

С небольшими изменениями вы можете сделать это так, как хотите