Я гуглил, но ничего не нашел.
$x->func(&$string, $str1=false, $str2=false);
что делает &
перед $string
&$string
?
Я гуглил, но ничего не нашел.
$x->func(&$string, $str1=false, $str2=false);
что делает &
перед $string
&$string
?
Вы назначаете это значение массива по ссылке.
передача аргумента через ссылку (&$) и $ заключается в том, что когда вы передаете аргумент через ссылку, вы работаете с исходной переменной, это означает, что если вы измените ее внутри своей функции, она будет изменена и за ее пределами, если вы передадите аргумент как копировать, функция создает копию экземпляра этой переменной и работает с этой копией, поэтому, если вы измените ее в функции, она не будет изменена вне ее.
Ссылка: http://www.php.net/manual/en/language.references.pass.php
& указывает, что в функцию должна быть передана ссылка на переменную, а не ее клон.
В этой ситуации, если функция изменит значение параметра, то изменится и значение переданной переменной.
Тем не менее, вы должны иметь в виду следующее для PHP 5:
Дополнительную информацию можно найти здесь: http://www.php.net/manual/en/language.references.pass.php
И здесь много информации: Reference — Что делает этот символ означает в PHP?
Пример поведения строк:
function changeString( &$sTest1, $sTest2, $sTest3 ) {
$sTest1 = 'changed';
$sTest2 = 'changed';
$sTest3 = 'changed';
}
$sOuterTest1 = 'original';
$sOuterTest2 = 'original';
$sOuterTest3 = 'original';
changeString( $sOuterTest1, $sOuterTest2, &$sOuterTest3 );
echo( "sOuterTest1 is $sOuterTest1\r\n" );
echo( "sOuterTest2 is $sOuterTest2\r\n" );
echo( "sOuterTest3 is $sOuterTest3\r\n" );
Выходы:
C:\test>php test.php
sOuterTest1 is changed
sOuterTest2 is original
sOuterTest3 is changed
&
означает передачу по ссылке:
Ссылки позволяют двум переменным ссылаться на один и тот же контент. Другими словами, переменная указывает на свое содержимое (а не становится этим содержимым). Передача по ссылке позволяет двум переменным указывать на одно и то же содержимое под разными именами. Амперсанд (&
) ставится перед переменной, на которую делается ссылка.
Это означает, что вы передаете ссылку на строку в метод. Все изменения, внесенные в строку в методе, будут отражены также за пределами этого метода в вашем коде.
См. также: PHP =& оператор
Пример:
$string = "test";
$x->func(&$string); // inside: $string = "test2";
echo $string; // test2
без оператора & вы все равно увидите «тест» в своей переменной.
& — передать по ссылке. Он передается по ссылке вместо строкового значения.