1

各配列値を次のように手動でコーディングすると、次のようになります。

$paymentDetailsType->setPaymentDetailsItem(
    array (
        'PaymentDetailsItem00' => $paymentDetailsItem,
        'PaymentDetailsItem01' => $paymentDetailsItem1,
    )
);

それは機能しますが、配列アイテムの数は変わる可能性があるので、私はこれを試しましたが、他に何を試すべきかわからない恐ろしい結果になりました

for ($i=0; $i<$_POST['cartcount']; $i++) {
    if ($i==0) {
        $paymentDetailsType->setPaymentDetailsItem(
            array (                     
                'PaymentDetailsItem00' => $paymentDetailsItem,
            )
        );
    } else {
        $paymentDetailsType =& $paymentDetailsType->setPaymentDetailsItem(
            array (
                'PaymentDetailsItem0'.$i.'' => ${'paymentDetailsItem'.$i},
            )
        );
    }
}

私がやろうとしているのは、オブジェクトメソッドに配列値を追加することです。

4

2 に答える 2

2
$thenewarray = array (
    'PaymentDetailsItem00' => $paymentDetailsItem,
);

if ($_POST['cartcount']>1) {
    for ($i=1; $i<$_POST['cartcount']; $i++) {
        $thenewarray['PaymentDetailsItem0'.$i.''] = ${'paymentDetailsItem'.$i};
    }
    $i=0;
}

$paymentDetailsType->setPaymentDetailsItem($thenewarray);

事前に配列を作成し、配列が完了した後、最後に追加されたキーと値をループしてオブジェクトに追加します

于 2012-06-20T22:06:36.063 に答える
0
$paymentDetailsType =& $paymentDetailsType->setPaymentDetailsItem(
            array (
                'PaymentDetailsItem0'.$i.'' => ${'paymentDetailsItem'.$i},
            )
        );

を使用するときに2つのオブジェクトがマージされることは期待できないため、この部分は機能しません=&。配列を追加する場合は、を呼び出すことができますarray_merge()。たとえば、次のように変更できますpaymentDetailsType

class paymentDetailsType
{
    private $_items = array();

    function addPaymentDetailsItem($items)
    {
        $_items = array_merge($_items, $items);
    }
}

それに加えて、配列に変更${'paymentDetailsItem'.$i}すると、アイテムをとしてアドレス指定し、キーとして使用することができます。$paymentDetailsItem[$i]$i

于 2012-06-20T22:33:35.050 に答える