如果我像这样手动编码每个数组值:
$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},
)
);
}
}
我相信我正在尝试做的是将数组值添加到对象方法中。
$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);
事先创建了数组,然后循环添加键和值,最后在数组完成后将其添加到对象中
$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
作为键。