2016-02-20 5 views
1

У меня есть этот пример таблицы данных, на самом деле имеет идентификаторы, цены, больше вещей, но я думаю, что я могу спросить с этими данными, им с помощью PHP как мой язык:Как создать многомерный ассоциативный массив

id category product  complement_type option 
1 Pizza  Large Pizza Bread    Brown bread 
2 Pizza  Small Pizza Bread    White bread 
3 Pizza  Small Pizza Ingredients  Olives 
4 Salads Green Salad Extras   Bacon 
5 Salads Cesars Salad Extras   Lettuce 

я уже есть запрос для этой таблицы,

теперь я хочу, чтобы преобразовать ИК в массив этого типа

array(
[Pizza] => array(
      [Large Pizza] => array(
           [Bread] => Brown Bread 
          ) 
      ), 
      array(
      [Small Pizza] => array(
           [Bread]  => White Bread 
           [Ingredients] => Olives 
          ), 
      ) 
), 
[Salads] => array(
      [Green Salad] => array(
           [Extras]   => Bacon 
          ) 
      [Cesar Salad] => array(
           [Extras]   => Lettuce 
          ) 
) 

, что массив является то, что я пытаюсь достичь, но я просто не могу получить его правый

Я знаю, что мне нужно зацикливать его с циклом for, возможно, добавить цикл while, чтобы получить изменения в категориях, но я просто не считаю способ сделать это, любые идеи о том, как достичь этого?

я ценю любой идеи

Опять же, им с помощью PHP

благодаря

Edit: Heres ссылка на им данных становится его немного по-другому, но его тот же самый принцип

https://dobleslash.com/TakeEatEasy/API/getRest?id=1

+1

Будет ли эта помощь? http://stackoverflow.com/questions/8840319/build-a-tree-from-a-flat-array-in-php –

+0

Позвольте мне проверить это – kastulo

+1

Два вопроса: 1) ваш исходный массив ассоциативен или нет? 2) какой драйвер mysql вы используете для выполнения запроса: pdo, mysqli или mysql? – fusion3k

ответ

1

Прежде всего: ваш исходный массив - как отправлено - комментарий - если массив объектов: это pre Заметка liminar заключается в том, чтобы понять синтаксис ->, иначе неясно просто прочитать свой главный вопрос.

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

$result = array(); 
foreach($array as $row) 
{ 
    if(!isset($result[ $row->category ])) 
    { 
     $result[ $row->category ] = array(); 
    } 
    if(!isset($result[ $row->category ][ $row->product ])) 
    { 
     $result[ $row->category ][ $row->product ] = array(); 
    } 
    $result[ $row->category ][ $row->product ][ $row->complement_type ] = $row->option; 
} 

В начале, я инициализации пустой массив. Затем - через цикл foreach обрабатываю каждый элемент $array и - если первичный ключ (продукт) не существует в массиве результатов, я создаю его как пустой массив; то я выполняю такие же действия для подраздела категории (Большая пицца и т. д.). Наконец, я добавляю тип дополнения.

eval.in demo

+0

Я благодарю вас за этот ответ, это именно то, что я искал, я адаптировал некоторые вещи и отлично себя зарекомендовал, спасибо снова! – kastulo

Смежные вопросы