Я работаю в Google, но ничего не могу найти.
$x->func(&$string, $str1=false, $str2=false);
что делает &
до $string
&$string
do?
Я работаю в Google, но ничего не могу найти.
$x->func(&$string, $str1=false, $str2=false);
что делает &
до $string
&$string
do?
Вы назначаете это значение массива по ссылке.
передавая аргумент через ссылку (& $), а через $- то, что когда вы передаете аргумент через ссылку, вы работаете с исходной переменной, означает, что если вы измените ее внутри своей функции, она также будет изменена вне ее, если вы аргумент pass в качестве копии, функция создает экземпляр копии этой переменной и работает над этой копией, поэтому, если вы измените ее в функции, она не будет изменена вне нее
Ссылка: http://www.php.net/manual/en/language.references.pass.php
& Amp; утверждает, что ссылка на переменную должна быть передана в функцию, а не ее клон.
В этой ситуации, если функция изменит значение параметра, значение переданной переменной также изменится.
Тем не менее, вы должны иметь в виду следующее для PHP 5:
Вы можете найти больше информации здесь: http://www.php.net/manual/en/language.references.pass.php
И здесь много информации здесь: Справочник. Что означает этот символ в 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
без оператора и, вы все равно увидите "тест" в своей переменной.