0

私はいくつかの配列を使用しています。そのうちの 1 つは productid であるキーを持ち、値はその製品の教義エンティティを含むオブジェクトです。同様に、インデックスがプラン ID であるプランがあります。この for ループでは、プランと製品のペアごとに請求書を個別に設定する必要があります (ユーザーが既に所有しているデバイスのプランを購入する場合を除き、数量は常に同じになります)。明らかにこれはやや複雑なので、この質問をどのように表現すればよいか正確にはわかりません。「Notice: Undefined Index」というコメント行でエラーが発生します。

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);
    }

どんな助けでも大歓迎です。

4

1 に答える 1

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--;
于 2013-03-28T20:26:05.483 に答える