PHP 循环尝试将数组值添加到对象方法/属性


php loop in attempt to add array values to an objects method / property

如果我像这样手动编码每个数组值:

$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作为键。