Задать вопрос
@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 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
Решения вопроса 1
@Camaro67
Помог? - жми "Отметить решением"
Вы не понимаете как работает передача объекта, вот здесь почитайте, там есть ответ на ваш вопрос.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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