Big_person
@Big_person

Почему обрезаются нули в строке php?

Имеем массив $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.

Почему так происходит никак не могу понять.
  • Вопрос задан
  • 197 просмотров
Решения вопроса 1
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
вангую, что нужно сделать:
$location_variants->{$k} = clone $location;

P.S. Думаю, что объект $location передается по ссылке и при изменении поля price оно меняется так же в новом объекте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы