2013-06-14 5 views
2

У меня есть массив с массивами для каждого из значений. Как я могу прокручивать каждый из этих вложенных массивов (или как бы там ни было технический термин).Цитирование с помощью ключей массива с PHP

Это структура (может быть несколько order_items в порядке)

Array ([0] => 
     Array ( 
      [order_item] => Array (
       [id] => 1 
       [order_id] => 1 
       [userid] => 1 
       [item_number] => 3 
       [itemName] => Item A 
       [price] => 1.99 
       [quantity] => 1 
       [total] => 1.99 
       [item_status] => Not Filled 
       [created] => 2013-06-13 07:42:00 
       [modified] => 2013-06-13 07:42:00 
      ) 
      [order_item] => Array (
       [id] => 2 
       [order_id] => 1 
       [userid] => 1 
       [item_number] => 4 
       [itemName] => Item B 
       [price] => 1.99 
       [quantity] => 1 
       [total] => 1.99 
       [item_status] => Not Filled 
       [created] => 2013-06-13 07:42:00 
       [modified] => 2013-06-13 07:42:00 
       ) 
      [Order] => Array (
       [id] => 1 
       [userid] => 4 
       [order_status] => Not Filled 
       [email] => [email protected] 
       [total] => 1.99 
       [fullName] => Test 
       [address] => Test 
       [city] => Test 
       [state] => IA 
       [zip] => 12345 
       [created] => 2013-06-13 07:42:00 
       [modified] => 2013-06-13 07:42:00 
      ) 
     ) 
    ) 

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

/* new order */ 
//this the headings for an order 
id name  date etc... 
1 test  123 

//this is for each of the items in the order 
id item number quantity price etc.. 
1  345    2   1.99 
1  456    1   1.00 

/* new order */ 
//Another order so the headings must be added again 
id name  date etc... 
2 test  345 

//this is for each of the items in the orders 
id item number quantity price etc.. 
2  345    1   1.00 

Одна вещи, чтобы отметить, что я использую преуспевание экспорта плагин PHP для CakePHP found here где данные для экспорта следует эта структура

$data = array(
     //each of these arrays are rows to be inserted into excel 
     array('a', 'b', 'c'), 
     array(1, 2, 3), 
     array('you', 'and', 'me'), 
    ); 

Предполагая, что этот массив данных, которые будут вставлены в $ order_values ​​и массив я толкая его в это $ данные

$data = array(); 
foreach($order_values as $order){ 

    //Order headings go here 
    array_push($data, array('Order ID', 'Order total', etc...)) 

    //order data here. There is always only 1 line of order data per order 
    array_push($data, $order[Order]['id'], order[Order]['item_number']..); 

    //order items headings go here 
    array_push($data, array('Item number', 'Item Price', etc..)); 

    foreach(){ 
      array_push($data, /*now add the order items for the specific order*/) 
    } 
} 

Как я могу выполнить это?

+0

Имеет ли ваш второй уровень вниз массив на самом деле содержит несколько отдельных элементов с именем «order_item» вместе с элементом «Заказ»? –

+2

Ваш псевдо-PHP-код довольно сложно выполнить. Вы действительно пытались написать этот код? Что случилось? Можете ли вы опубликовать свой код и результаты? –

ответ

0

Массив, который вы нам показываете, не может существовать в действительности. Каждый ключ массива должен быть уникальным, иначе он будет просто перезаписан. Вы используете order_item несколько раз. Что вы можете сделать это:

Array ([0] => 
    Array ( 
     [order_items] => Array (
      Array ([id] => 1 [order_id] => 1 [userid] => 1 [item_number] => 3 [itemName] => Item A [price] => 1.99 [quantity] => 1 [total] => 1.99 [item_status] => Not Filled [created] => 2013-06-13 07:42:00 [modified] => 2013-06-13 07:42:00) , 
      Array ([id] => 2 [order_id] => 1 [userid] => 1 [item_number] => 4 [itemName] => Item B [price] => 1.99 [quantity] => 1 [total] => 1.99 [item_status] => Not Filled [created] => 2013-06-13 07:42:00 [modified] => 2013-06-13 07:42:00) 
     ), 
     [Order] => Array ([id] => 1 [userid] => 4 [order_status] => Not Filled [email] => [email protected] [total] => 1.99 [fullName] => Test [address] => Test [city] => Test [state] => IA [zip] => 12345 [created] => 2013-06-13 07:42:00 [modified] => 2013-06-13 07:42:00) 
    ) 
) 

(Это, вероятно, не совсем, как печать будет выглядеть, но вы получите идею)

Вы можете использовать свой код псевдо

$data = array(); 
foreach($order_values as $order){ 

    array_push($data, array('Order ID', 'Order total', etc...)) //Order headings go here 

    array_push($data, $order[Order]['id'], order[Order]['item_number']..); //order data here. There is always only 1 line of order data per order 

    array_push($data, array('Item number', 'Item Price', etc..)); //order items headings go here 

    foreach($order['order_items'] as $order_item){ 
      array_push($data, //now add the order items for the specific order) 
    } 
} 
Смежные вопросы