В настоящее время я извлекаю данные из нашей базы данных с помощью функции 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-заявлений и ссылок, но мне было трудно заставить что-то работать.
Кто-нибудь знает, как я могу это сделать?
Это похоже на то, что вы ищете
$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);
С небольшими изменениями вы можете сделать это так, как хотите