2016-05-09 3 views
0

У меня есть массив (получение данных из файла excel), который я пытался «объединить» данные, зависящие от идентификатора. Мне удалось создать массив (Группировка продуктов с идентификатором), что приводит к следующему.Print Array Key Многомерный в пределах Foreach

Array ([Order10] => Array ([Mr Name] => Array ([45 STREET] => Array ([AREA] => Array ([Product1] => 1 [Product2] => 3))))) 

Я сейчас пытаюсь получить данные, извлеченные (Order, имя, улица и т.д.), но я только умея извлечь идентификатор (Order10) с помощью ключа (вар). Вот базовая схема того, что в настоящий момент имеет код.

//Gets Data from excel file 
foreach ($bulk as $prod) 
{ 
    $APIOrder[] = array('Order' => $prod['ORDER'], 
         'Prod' => $prod['PROD'], 
         'Quantity' => $prod['QTY'], 
         'Recipient_Name' => $prod['RECIPIENT_NAME']); 
} 

$newOptions = array(); 
foreach ($APIOrder as $option) 
{ 
    $Order = $option['Order']; 
    $Prod = $option['Prod']; 
    $Qty = $option['Quantity']; //Added 
    $Recipient_Name = $option['Recipient_Name']; 
    $newOptions[$Order][$Recipient_Name][$Prod] = $Qty; 
} 

$index4 = 0; 

foreach($newOptions as $key=>$val) 
{ 
    $SeperateOptions = (array_slice($newOptions, $index4, true)); 
    //Print Array to check, Echo ID, Name, Product 
    $index4++; 
} 

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

Array ([Order10] => Array ([Mr Name] => Array ([45 STREET] => Array ([AREA] => Array ([Product1] => 1))))) 
Array ([Order10] => Array ([Mr Name] => Array ([45 STREET] => Array ([AREA] => Array ([Product2] => 3))))) 

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

+0

Вы не можете этого сделать. В PHP ключи массива должны быть уникальными и могут быть только строкой или целым числом. Ваш существующий массив хорош. – vaso123

+0

@lolka_bolka Спасибо за ответ, поэтому сохраните его с одним массивом (с продуктами mulitple). Как я могу «извлечь» ключевые имена, такие как адрес? Это проблема, с которой я сталкиваюсь по-настоящему. – Jake

+0

См. Мой «ответ» – vaso123

ответ

0

На самом деле это не ответ, но на основе комментариев между OP и мной я пытаюсь показать ему, как я это делаю, и он слишком длинный, и вот форматирование кода. Ключ - это идентификатор порядка, каждый элемент в массиве, то есть более 1 значения. products - массив. Try всегда держать связанные вещи прилагается .:

$orders = [ 
    'Order10' => [ 
     'name' => 'Mr Name', 
     'address' => [ 
      'street' => 'street here', 
      'country' => 'country here', 
      'zipcode' => 'zipcode here' 
     ], 
     'phones' => [ 
      'mobile' => 'mobile phone here', 
      'fax' => 'fax here', 
      'workplace' => 'here' 
     ], 
     'products' => [ 
      'productId1', 
      'productId2', 
      //and so on 
     ] 
    ] 
]; 

, а затем вы можете перебирать свой массив порядка, как это, чтобы показать:

foreach ($orders as $order) { 
     ?> 
     <div>Name: <?php echo $order['name']; ?></div> 
     <div>Address: <?php echo $order['address']['zipcode']; ?>, <?php echo $order['address']['country']; ?>, <?php echo $order['address']['street']; ?> </div> 
     <div>Products: 
      <?php 
      foreach ($order['products'] as $procutId) { 
       $Produt = new Procut($productId); 
       ?> 
       <div><?php echo $Product->getName(); ?></div> 
       <?php 
      } 
      ?> 
     </div> 
     <hr> 
     <?php 
    } 
} 
?> 

В моем примере, у меня есть Product класс, может быть, вы не используете классы, но, конечно, вы можете создать getProcut($id) функцию, чтобы получить продукт id, так что это может быть

$product = getProduct($procutId); 
echo $product['name']; 

Это ваше решение.

+0

Еще раз спасибо @lolka_bolka. Класс продукта для этого не нужен, поскольку он считывает заказы из файла excel (я использую классы для других). Я рассмотрю ваш пример и попытаюсь его адаптировать. Спасибо еще раз за помощь! – Jake

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