Here is a code snippet:
$r = [];
$currencies = ['EUR','USD'];
$items = [];
$items[] = (object)['product_name' => 'product1'];
$items[] = (object)['product_name' => 'product2'];
$items[] = (object)['product_name' => 'product3'];
$i = 0;
foreach($currencies as $currency)
{
foreach($items as $key => $item)
{
$items[$key]->field1 = $i++;
$items[$key]->field2 = $i++;
}
print_r($items);
$r[] = $items;
}
print_r($r);die('end');
The first two print_r, inside the foreach loop displays the correct arrays with autoincrement values in the fields.
Array
(
[0] => stdClass Object
(
[product_name] => product1
[field1] => 0
[field2] => 1
)
[1] => stdClass Object
(
[product_name] => product2
[field1] => 2
[field2] => 3
)
[2] => stdClass Object
(
[product_name] => product3
[field1] => 4
[field2] => 5
)
)
Array
(
[0] => stdClass Object
(
[product_name] => product1
[field1] => 6
[field2] => 7
)
[1] => stdClass Object
(
[product_name] => product2
[field1] => 8
[field2] => 9
)
[2] => stdClass Object
(
[product_name] => product3
[field1] => 10
[field2] => 11
)
)
But the last one in the last line displays an array whith two elements where the elements are identical, $r[0] contains the same value as $r[1]
Array
(
[0] => Array
(
[0] => stdClass Object
(
[product_name] => product1
[field1] => 6
[field2] => 7
)
[1] => stdClass Object
(
[product_name] => product2
[field1] => 8
[field2] => 9
)
[2] => stdClass Object
(
[product_name] => product3
[field1] => 10
[field2] => 11
)
)
[1] => Array
(
[0] => stdClass Object
(
[product_name] => product1
[field1] => 6
[field2] => 7
)
[1] => stdClass Object
(
[product_name] => product2
[field1] => 8
[field2] => 9
)
[2] => stdClass Object
(
[product_name] => product3
[field1] => 10
[field2] => 11
)
)
)
Any guess with this?
$itemsarray. So rather than having copies of the data, you are always referencing the same set of 3 items.$r[] = print_r($items,true);works correctly.