ekta singh
ekta singh

Reputation: 138

how make these variables dynamic in foreach loop

I have Cart Data and i want to use paypal then i want to make cart data into this formate

Code:

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

Upvotes: 1

Views: 831

Answers (2)

phoenix455
phoenix455

Reputation: 46

You can define varying data in assoc array first:

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

Then iterate over it and add to result array:

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

Upvotes: 1

Halayem Anis
Halayem Anis

Reputation: 7805

PHP allows you to create variable's name dynamically ex :

<?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;
    }

Dumping defined variables will show you that :

print_r(get_defined_vars());

output

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

Upvotes: 1

Related Questions