2016-01-28 42 views
1

我有車數據,我想貝寶使用的話,我想打車數據到這個甲如何使這些變量在foreach循環動態

代碼:

$item_1 = new Item(); 
$item_1->setName('Item 1') // item name 
    ->setCurrency('USD') 
    ->setQuantity(2) 
    ->setPrice('15'); // unit price 

$item_2 = new Item(); 
$item_2->setName('Item 2') 
    ->setCurrency('USD') 
    ->setQuantity(4) 
    ->setPrice('7'); 

$item_3 = new Item(); 
$item_3->setName('Item 3') 
    ->setCurrency('USD') 
    ->setQuantity(1) 
    ->setPrice('20'); 

// add item to list 
$item_list = new ItemList(); 
$item_list->setItems(array($item_1, $item_2, $item_3)); 
+0

採取然後基於select元素的數組會創建很多Item對象。 –

回答

1

可以在ASSOC陣列首先定義變化的數據:

$data = array(
    array(
    'quantity' => 1, 
    'price' => '15'), 
... // etc 
); 

然後迭代它,並添加到結果數組:

$result = array(); 
for($i = 0; $i < count($data); ++$i) { 
    $obj = new Item(); 
    $obj->setName('Item ' . ($i+1)) // item name 
     ->setCurrency('USD') 
     ->setQuantity($data[i]['quantity']) 
     ->setPrice($data[i]['price']); 
    $result[] = $obj; 
} 
$item_list = new ItemList(); 
$item_list->setItems($result); 
1

PHP允許你創建變量名稱動態 例如:

<?php 
    class A { 
     public $member; 
    } 

    for($i=0 ; $i<5 ; $i++) { 
     $var_pattern = sprintf('item_%s', ($i+1)); 
     ${$var_pattern} = new A(); 
     ${$var_pattern}->member = $i; 
    } 

傾銷定義的變量會告訴你的是:

print_r(get_defined_vars()); 

輸出

[item_1] => A Object 
    (
     [member] => 0 
    ) 

[item_2] => A Object 
    (
     [member] => 1 
    ) 

[item_3] => A Object 
    (
     [member] => 2 
    ) 

[item_4] => A Object 
    (
     [member] => 3 
    ) 

[item_5] => A Object 
    (
     [member] => 4 
    )