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

这部分不起作用,因为您不能期望在使用=&. 当你想添加数组时,你可以调用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 回答