2012-06-20 2 views
1

난 각 배열의 값이 같은 코드를 건네 경우PHP 루프

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

내가 뭘 하려는지 믿는 것은 객체 메소드에 배열 값을 추가하는 것이다. 배열이 제품은 작동하지 않습니다 오브젝트

+1

배열을 먼저 만든 다음 해당 배열을 매개 변수로 메서드에 전달할 수 있습니까? – robonerd

+0

@robonerd 간단한 해결책! 네, 방금 만든 트릭을 만든 다음 키와 값을 for 루프로 추가 한 다음 전체 배열로 객체 속성을 추가했습니다. – kqlambert

답변

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

추가, 키와 값을 통해 사전에 다음 배열 루프를 생성 때문에 할 수 없습니다 =&을 사용할 때 두 개체가 병합 될 것으로 예상하십시오. 배열을 추가하려면 array_merge()을 호출하면됩니다. 당신은 예를 들어 귀하의 paymentDetailsType이 변경 수 : 게다가

class paymentDetailsType 
{ 
    private $_items = array(); 

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

을, 당신이 array 인에 ${'paymentDetailsItem'.$i}을 변경할 때, 당신은 단순히 $paymentDetailsItem[$i] 등의 항목을 해결하고 단순히 키로 $i를 사용할 수 있습니다.

0
$paymentDetailsType =& $paymentDetailsType->setPaymentDetailsItem(
      array (
       'PaymentDetailsItem0'.$i.'' => ${'paymentDetailsItem'.$i}, 
      ) 
     ); 

에 추가 완료 마침내 후