[php] &(амперсант) перед функцией

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

Ответить
itwork
Сообщения: 79
Зарегистрирован: 28 дек 2006, 15:20

Могли бы разъяснить что значит &(амперсант) перед функцией, для чего он?

Например, function &myFunc($arg, $arg2) {}
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Может быть, вы имели в виду "function myFunc(&$arg, &$arg2) {}"?
Амперсанд перед именем функции никогда не встречал, а вот амперсанд перед параметром - да, бывает. Разница в том, что переменные с амперсандом берутся по ссылке, а без него - по значению. Иначе говоря, изменение переменной с амперсандом внутри функции, повлияет на ее значение вне.

Код: Выделить всё

function fun1($arg) {$arg++; return arg;}
function fun2(&$arg) {$arg++; return arg;}
$arg=10;
echo fun1($arg);//Выведет 11
echo $arg; //Выведет 10 - изменение переменной внутри функции не повлияло на значение исходной переменной
echo $fun2($arg); //Выведет 11
echo $arg;//Выведет 11
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
itwork
Сообщения: 79
Зарегистрирован: 28 дек 2006, 15:20

нет иммено перед названием функции, например, в joomla cms 1.5
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

Возвращается ссылка на переменную. Вызывать функцию надо тоже с амперсандом.
Ответить