В первом варианта, значение $a становится таким же, как $b. Во втором варианте, $a становится ссылкой на $b. То есть если меняется значение $b, будет меняться значение $a.
Значит в $a = 10; $b = $a; таком варианте будет занято больше памяти т.к. будет занято две ячейки значением 10. А, тут $a = 10; $b =& $a; Память будет занято меньше, т.к. в ней будет только одно значение 10. Я правильно понял?
@troelsenon да, но нет. PHP умный и он на самом деле не будет копировать данные в новую ячейку, пока это реально не потребуется.
В целом, да, но если копнуть глубже - не совсем, а на самом деле скорее нет, чем да ) Для начала, простой код: PHP: <?php $start = memory_get_usage(true); $a = str_repeat('0', 1024); echo (memory_get_usage(true) - $start).PHP_EOL; // 1280 $b = $a; echo (memory_get_usage(true) - $start).PHP_EOL; // 1312 $c = &$a; echo (memory_get_usage(true) - $start).PHP_EOL; // 1336 $a = str_repeat('1', 1024); echo (memory_get_usage(true) - $start).PHP_EOL; // 2616 $b = str_repeat('1', 1024); echo (memory_get_usage(true) - $start).PHP_EOL; // 2616 Так вот, если не вдаваться в детали вы всё поняли верно, но как видно из примера, присвоение $b = $a и $c = &$a увеличило память практически одинаково, потому что в обоих случаях PHP создал ссылку на $a с той лишь разницей, что в первом случае она носит чисто технический характер и разорвется как только $a или $b изменятся: $a = str_repeat('1', 1024) и $b = str_repeat('1', 1024); дают нам прирост в килобайт. Но на самом деле, при старте PHP сразу забирает 2Mb под процесс и потому реальная память будет так же забираться кусками лишь по превышении этого лимита. PHP: echo memory_get_usage(true).PHP_EOL; // 2097152 $a = str_repeat('0', 1024 * 1024); // + 1 Mb echo memory_get_usage(true).PHP_EOL; // 2097152 $b = str_repeat('0', 1024 * 1024); // + 1 Mb echo memory_get_usage(true).PHP_EOL; // 4194304 $c = str_repeat('0', 1024 * 1024); // + 1 Mb echo memory_get_usage(true).PHP_EOL; // 6291456 $d = str_repeat('0', 1024 * 1024); // + 1 Mb echo memory_get_usage(true).PHP_EOL; // 8388608 Вообще, если вам интересно как это всё происходит внутри, можете начать с этого: https://habrahabr.ru/company/mailru/blog/275497/ https://habrahabr.ru/company/mailru/blog/308240/ https://webshake.ru/post/659 в блоге mailru на хабре довольно неплохо все это расписано, поищите там статьи по теме. --- Добавлено --- p.s. ну и что бы не начать ненароком холивар, замечу, что речь шла про php7 и "ссылка" относилась к zval.
если не про память а по смыслу - то вот такой пример даст понять PHP: $a = 10; $b =&$a; echo "a=$a, b=$b";// выдаст a=10, b=10 $a = 12; echo "a=$a, b=$b";// выдаст a=12, b=12