Что означает знак «&» в PHP?

Я пытался найти этот ответ в Google, но я думаю, что символ & работает как оператор или просто не является поисковым термином по любой причине .. во всяком случае. Я видел этот фрагмент кода, изучая, как создавать плагины WordPress, поэтому мне просто нужно знать, что означает & когда оно предшествует переменной, которая содержит объект класса.

 //Actions and Filters if (isset($dl_pluginSeries)) { //Actions add_action('wp_head', array(&$dl_pluginSeries, 'addHeaderCode'), 1); //Filters add_filter('the_content', array(&$dl_pluginSeries, 'addContent')); } 

Это заставит переменную передавать по ссылке. Обычно для простых типов создается печатная копия. Это может пригодиться для больших строк (прирост производительности) или если вы хотите манипулировать переменной без использования оператора return, например:

 $a = 1; function inc(&$input) { $input++; } inc($a); echo $a; // 2 

Объекты будут переданы по ссылке автоматически.

Если вы хотите обработать копию для функции, используйте

 clone $object; 

Затем исходный объект не изменяется, например:

 $a = new Obj; $a->prop = 1; $b = clone $a; $b->prop = 2; // $a->prop remains at 1 

Амперсанд, предшествующий переменной, представляет собой ссылку на оригинал вместо копии или просто значения.

См. Здесь: http://www.phpreferencebook.com/samples/php-pass-by-reference/

Это передает что-то по ссылке вместо ценности.

Видеть:

http://php.net/manual/en/language.references.php
http://php.net/manual/en/language.references.pass.php

Я использовал его для отправки переменной функции, и функция меняет переменную вокруг. После выполнения функции мне не нужно возвращать функцию к возвращаемому значению и устанавливать новое значение для моей переменной.

пример

 function fixString(&$str) { $str = "World"; } $str = "Hello"; fixString($str); echo $str; //Outputs World; 

Код без &

 function fixString($str) { $str = "World"; return $str; } $str = "Hello"; $str = fixString($str); echo $str; //Outputs World;