2013-03-28 3 views
0

Я работаю с несколькими массивами, один из которых имеет ключи, которые являются productid, а значение является объектом, содержащим объект доктрины этого продукта. Аналогично, у меня есть план с индексом, являющимся идентификатором плана. Для этого цикла цикла мне нужно пройти и индивидуально настроить счета-фактуры для каждой пары плана-продукта (количество всегда будет одинаковым между ними, за исключением случаев, когда пользователь приобретает план для уже принадлежащего устройства). Очевидно, это несколько сложно, поэтому я не совсем уверен, как сформулировать этот вопрос. Произошла ошибка в прокомментированной строке «Уведомление: Неопределенный индекс»Имея проблему с ключами массива, неопределенный индекс

for ($i = 0; $i < $totalInvoices; $i++) { 
     if ($i == $planQuantity[key($plans)]) { 
      next($plans); 
     } 
     if ($i == $productQuantity[key($products)]) { 
      next($products); 
     } 
     $data = array(
      'planId' => key($plans), 
//below here, I'm thinking at key($products) is where the error occurs 
      'productId' => key($products) != 0 ? key($products) : $plans[key($plans)]->getPricingTier()->getProductId(), 
      'userId' => $this->userId, 
      'paymentMethodId' => $paymentMethodId 
     ); 
     if ($order['hasProduct'] || isset($order['activating'])) { 
      if (!isset($order['activating'])) { 
       $planModel->createDevicePlan($data); 
       $productAmount = $products[key($products)]->getAmount(); 
      } else { 
       $data['deviceId'] = $order['activating']['inventoryId']; 
       $planModel->createDevicePlan($data, date('Y-m-d')); 
       $productAmount = 0; 
      } 
     } else { 
      $productAmount = 0; 
     } 
     if ($iteration % 5 == 0 && $order['hasShipping']) { 
      $invoiceShippingAmount = $billingModel->getShippingAmount($shippingOptionsId); 
     } else { 
      $invoiceShippingAmount = 0; 
     } 
     $salesData = array(
      'paymentMethodsId' => $paymentMethodId, 
      'planAmount'   => $plans[key($plans)]->getAmount(), 
      'planId'    => key($plans), 
      'productAmount'  => $productAmount, 
      'productId'   => key($products), 
      'shippingAddressesId' => $shippingAddressId, 
      'shippingAmount'  => $invoiceShippingAmount, 
      'shippingOptionsId' => $shippingOptionsId, 
      'transactionId'  => $transactionId, 
      'userId'    => $this->userId 
     ); 
     $iteration++; 
     $billingModel->createInvoice($salesData); 
    } 

Любая помощь была бы принята с благодарностью.

+0

Я запутался о роли '$ planQuantity' и' $ productQuantity' массивы –

+0

planQuantity имеет индекс с planid, а затем количество планов для итерации через productQuantity одинаково, но с productId как индекс – jonathonh

ответ

0

На основе вашего комментария ответ, я думаю, что это поможет

$plans_on_invoice = 0; 
$products_on_invoice = 0; 
for ($i = 0; $i < $totalInvoices; $i++) { 
    next($plans); 
    if ($plans_on_invoice == 0) { 
     $plans_on_invoice = $planQuantity[key($plans)]; 
    } 
    plans_on_invoice--; 
    next($products); 
    if ($products_on_invoice == 0) { 
     $products_on_invoice = $productQuantity[key($products)]; 
    } 
    products_on_invoice--; 
+0

Если мне не хватает чего-то, что подразумевалось, это тоже не работает. :( – jonathonh

+0

Я думаю, что мы оба на разных длинах волн здесь. Я предполагаю, что на самом деле это '$ planQuantity' и' $ productQuantity'. Я думаю, что есть структурная проблема с кодом, а не только синтаксис. –

+0

I может опубликовать весь метод, если это поможет – jonathonh

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