@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 />';
}
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
@Camaro67
Помог? - жми "Отметить решением"
Вы не понимаете как работает передача объекта, вот здесь почитайте, там есть ответ на ваш вопрос.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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