Задать вопрос
@litecoin

Почему такое происходит с foreach stdClass в php?

Подскажите, пожалуйста, почему в результате выполнения данного кода, когда в цикле foreach меняется значение объекта $n, также меняется и соответствующее значение объекта $mvs?

$a = new stdClass();
$b = new stdClass();

$a->name = 'one';
$b->name = 'two';

$movies = new stdClass();
$movies->a = $a;
$movies->b = $b;

foreach ($movies as $mvs) {
	echo $mvs->name.' - before<br />';
	$n = $mvs;
	$n->name = 'changed';
	echo $mvs->name.' - after<br />';
}


а вот в массивом такого не происходит (значение $mvs['name'] остается тем же):

$movies = array( 'a' => array( 'name' => 'one'), 'b' => array( 'name' => 'two') );

foreach ($movies as $mvs) {
	echo $mvs['name'].' - before<br />';
	$n = $mvs;
	$n['name'] = 'changed';
	echo $mvs['name'].' - after<br />';
}
  • Вопрос задан
  • 245 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@Camaro67
Помог? - жми "Отметить решением"
Вы не понимаете как работает передача объекта, вот здесь почитайте, там есть ответ на ваш вопрос.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽