Почему меняется переменная в цикле?

Valery Shostak

Новичок
Почему меняется переменная в цикле?

Простейший код. Два массива: $items_1 и $items_2. В первом — элементы в виде массива, во втором — в виде класса.
Как видите, в обоих случаях, в цикле переменная без &, следовательно, значение её меняться не должно.
Не могу понять, почему во втором случае оно всё-таки меняется...
PHP 5.2

PHP:
<?
  $items_1[1]['name'] = '111';
  $items_1[2]['name'] = '222';
  foreach($items_1 as $item_1)
    $item_1['name'] = '---';
  echo('<pre>'); print_r($items_1); echo('</pre>'."\n");

  $items_2[1]->name = '111';
  $items_2[2]->name = '222';
  foreach($items_2 as $item_2)
    $item_2->name = '---';
  echo('<pre>'); print_r($items_2); echo('</pre>'."\n");
?>
Результат работы скрипта:
Код:
Array
(
    [1] => Array
        (
            [name] => 111
        )

    [2] => Array
        (
            [name] => 222
        )

)

Array
(
    [1] => stdClass Object
        (
            [name] => ---
        )

    [2] => stdClass Object
        (
            [name] => ---
        )

)
 

Valery Shostak

Новичок
Но объекты принадлежат переменной, а она не должна меняться, следовательно и объекты тоже.
 

Valery Shostak

Новичок
$items_1 и $items_1...
Ой, щас поправлю))

-~{}~ 14.05.10 22:15:

Автор оригинала: WebAngel
потому что в РНР 5 объекты присваиваются по ссылке
А как сделать, чтобы они не присваивались по ссылке?
 

WebAngel

Новичок
ты хочешь изменять в цикле значения, но чтобы за циклом они остались неизменными? смысл в этом есть или это для общего развития?
 

Valery Shostak

Новичок
Всё, промер не нужен больше. Уже разобрался.
WebAngel, Вурдалак, спасибо большое! :)
 
Сверху