PHP & $string - O que isso significa? [duplicado]
- Referência-o que significa este símbolo em PHP? 18 respostas
$x->func(&$string, $str1=false, $str2=false);
o que faz isso &
Antes $string
&$string
Fazer?
5 answers
Está a atribuir esse valor à matriz por referência.
Passagem de argumento por meio de referência (&$) e por $ é que quando você passar argumento por referência trabalhar na variável original, significa que se você alterá-lo dentro de sua função vai ser alterado fora dela também, se você passar como argumento uma cópia, função cria cópia instância desta variável, e trabalho nesta cópia, por isso, se você alterá-la em função de não ser mudado do lado de fora,
Ref: http://www.php.net/manual/en/language.references.pass.php
The & states that a reference to the variable should be passed into the function rather than a clone of it.
Nesta situação, se a função Mudar o valor do parâmetro, então o valor da variável passada também irá mudar.
No entanto, deve ter em conta o seguinte para o PHP 5:
- a referência do tempo de chamada (como mostrou no seu exemplo) está desactualizada a partir de 5, 3
- passando por referência quando especificado na função a Assinatura não é depreciada, mas não é mais necessária para objetos como todos os objetos são agora passados por referência.
Você pode encontrar mais informações aqui: http://www.php.net/manual/en/language.references.pass.php
E há muita informação aqui.: Referência-o que significa este símbolo em PHP? Um exemplo dos comportamentos das cordas: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" );
Saídas:
C:\test>php test.php
PHP Deprecated: Call-time pass-by-reference has been deprecated; If you would l
ike to pass it by reference, modify the declaration of changeString(). If you w
ould like to enable call-time pass-by-reference, you can set allow_call_time_pas
s_reference to true in your INI file in C:\test\test.php on line 13
Deprecated: Call-time pass-by-reference has been deprecated; If you would like t
o pass it by reference, modify the declaration of changeString(). If you would
like to enable call-time pass-by-reference, you can set allow_call_time_pass_ref
erence to true in your INI file in C:\test\test.php on line 13
sOuterTest1 is changed
sOuterTest2 is original
sOuterTest3 is changed
E = passagem por referência:
As referências permitem que duas variáveis se refiram ao mesmo conteúdo. Por outras palavras, uma variável aponta para o seu conteúdo (em vez de se tornar esse conteúdo). A passagem por referência permite que duas variáveis apontem para o mesmo conteúdo sob nomes diferentes. O ampersand ( & ) é colocado antes da variável a ser referenciada.
Significa que se passa uma referência à cadeia no método. Todas as alterações feitas à string dentro do método serão refletidas também fora desse método em seu código.
Ver também: PHP's = & operator
Exemplo:
$string = "test";
$x->func(&$string); // inside: $string = "test2";
echo $string; // test2
Sem o & operador, você ainda veria "teste" na sua variável.
& – passar por referência. É passado por referência em vez de valor de cadeia.