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

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

Войти через центр авторизации
Похожие вопросы
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект
10 мая 2024, в 23:33
2500 руб./за проект