web-dev-qa-db-fra.com

PHP & $ string - Qu'est-ce que cela signifie?

J'ai fait des recherches sur Google, mais je ne trouve rien.

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

qu'est ce que ça & avant $string&$string faire?

31
Mickey

Vous affectez cette valeur de tableau par référence.

passer l'argument par la référence (& $) et par $, c'est que lorsque vous passez l'argument par la référence, vous travaillez sur la variable d'origine, signifie que si vous la changez à l'intérieur de votre fonction, elle sera également changée en dehors d'elle, si vous passez l'argument en tant que copie, la fonction crée une instance de copie de cette variable et travaille sur cette copie, donc si vous la modifiez dans la fonction, elle ne sera pas modifiée en dehors d'elle

Réf: http://www.php.net/manual/en/language.references.pass.php

40
Krish R

Le & indique qu'une référence à la variable doit être passée dans la fonction plutôt qu'un clone de celle-ci.

Dans cette situation, si la fonction modifie la valeur du paramètre, la valeur de la variable transmise changera également.

Cependant, vous devez garder à l'esprit les points suivants pour PHP 5:

  • La référence de temps d'appel (comme vous l'avez montré dans votre exemple) est obsolète à partir de 5.3
  • Le passage par référence lorsqu'il est spécifié sur la signature de fonction n'est pas obsolète, mais n'est plus nécessaire pour les objets car tous les objets sont désormais passés par référence.

Vous pouvez trouver plus d'informations ici: http://www.php.net/manual/en/language.references.pass.php

Et il y a beaucoup d'informations ici: Référence - Que signifie ce symbole en PHP?

Un exemple des comportements des chaînes:

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" );

Les sorties:

C:\test>php test.php

sOuterTest1 is changed
sOuterTest2 is original
sOuterTest3 is changed
11
Rob Baillie

& = En passant par référence:

Les références permettent à deux variables de faire référence au même contenu. En d'autres termes, une variable pointe vers son contenu (plutôt que de devenir ce contenu). Le passage par référence permet à deux variables de pointer vers le même contenu sous des noms différents. L'esperluette (&) est placée avant la variable à référencer.

3
LightningBoltϟ

& - Passer par référence. Il est transmis par référence au lieu d'une valeur de chaîne.

3
user3069029

Cela signifie que vous passez une référence à la chaîne dans la méthode. Toutes les modifications apportées à la chaîne dans la méthode seront également reflétées en dehors de cette méthode dans votre code.

Voir aussi: PHP's = & operator

Exemple:

$string = "test";
$x->func(&$string); // inside: $string = "test2";
echo $string; // test2

sans l'opérateur &, vous verriez toujours "test" dans votre variable.

2
eX0du5