PHP & $string - O que isso significa? [duplicado]

Esta pergunta já tem uma resposta:
  • Referência-o que significa este símbolo em PHP? 18 respostas
Tenho pesquisado no Google, mas não encontro nada.

$x->func(&$string, $str1=false, $str2=false);

o que faz isso & Antes $string &$string Fazer?

Author: Bartłomiej Semańczyk, 2013-12-06

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

 28
Author: Krish R, 2013-12-06 09:30:06

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
 9
Author: Rob Baillie, 2017-05-23 10:30:47

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.

 3
Author: LightningBoltϟ, 2013-12-06 09:01:23

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.

 2
Author: eX0du5, 2017-05-23 12:26:27

& – passar por referência. É passado por referência em vez de valor de cadeia.

 2
Author: user3069029, 2013-12-06 08:52:54