Имеем массив $this->locations. Задача сформировать аналогичный массив с данными из другого массива.
Делаю так.
$location_variants = new stdClass();
foreach ($this->locations as $k=>$location){
$location_variants->{$k} = $location;
if ($location->contact_id){
foreach ($prices as $price){
if ($location->contact_id == $price->city_id){
$location_variants->{$k}->price = $price->price;
break;
}
}
}
}
Результат:
object(stdClass)[4046]
public '0' =>
object(stdClass)[637]
public 'id' => string '542374' (length=6)
...
public 'price' => string '200.00' (length=6)
public '1' =>
object(stdClass)[638]
public 'id' => string '569591' (length=6)
....
public 'price' => string '200.00' (length=6)
Именно что и ожидается.
Но если я вызываю результат из другой функции, то результат выглядит:
object(stdClass)[4046]
public '0' =>
object(stdClass)[637]
public 'id' => string '542374' (length=6)
...
public 'price' => string '2.00' (length=6)
public '1' =>
object(stdClass)[638]
public 'id' => string '569591' (length=6)
....
public 'price' => string '2.00' (length=6)
У свойства 'price' изменяется число c 200.00 на 2.00. Причем изменение носит хаотичный порядок, то есть если число 600.00 изначально, то оно так и остается 600.00.
Почему так происходит никак не могу понять.