2013-03-28 24 views
0

我正在处理几个数组,其中一个键是productid,该值是包含该产品的学说实体的对象。同样,我有一个计划,索引是计划ID。对于这个for循环,我需要为每个计划 - 产品对分别设置发票(数量总是相同,除非用户正在为已拥有的设备购买计划)。显然这有点复杂,所以我不确定如何描述这个问题。在注释行发生错误,“注意:未定义索引”有数组键的问题,未定义的索引

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