Передача по ссылке и по значению php

Опубликовано: 2013-06-27 14:12:43

Когда вы пишем $a = $b, то происходит копирование значения из ячейки c одним адресм в ячейку с другим адресом $b. Это по большей части удобно и главное безопасно потому что изменяя $a мы не меняем $b и наоброт, но медленее, чем второй вариант.

Первый вариант. Копирование по значению.

[php]

<?php

$arr = array(1,2,3,4,5);

$arr2 = $arr;

$arr[1] = 3;



print_r($arr);

print_r($arr2);

[/php]

Второй вариант это передача данных по ссылке. Здесь копирование ячеек не происходит и поэтому это быстрее, но есть подводные камни, которые следует учитывать, так как если этогоне сделать, то последствия могут быть очень серьезные. Серьезными они будут потому, что вы не сразу поймете причину по которой у вас программа работает не так, как вы ожидаете.

Смотрите пример "копирование по ссылке".

[php]

<?php

$arr = array(1,2,3,4,5);

$arr2 = &amp;$arr;

$arr[1] = 3;



print_r($arr);

print_r($arr2);

[/php]

Берем массив arr и присваиваем ему какое-то начальное значение (1,2,3,4,5). Потом заводим массив arr2 и говорим интерпретатору что arr2 указывает на arr. А потом меняем первый жлемент массива arr и далее смотрим на результаты вывода. Изменения в массиве arr затронули не только массив arr, но и arr2.