web-dev-qa-db-ja.com

PHP&$ string-これはどういう意味ですか?

私はグーグルをしてきましたが、何も見つかりません。

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

それは何ですか&$string&$string 行う?

31
Mickey

参照によってその配列値を割り当てています。

引数を参照(&$)経由で渡し、$を使用して引数を参照経由で渡すと、元の変数で作業します。つまり、関数内で変数を変更すると、関数の外側でも変更されます。コピー、関数はこの変数のコピーインスタンスを作成し、このコピーで作業するため、関数内で変更しても、それ以外では変更されません

参照: http://www.php.net/manual/en/language.references.pass.php

40
Krish R

&は、変数への参照を関数のクローンではなく関数に渡す必要があることを示しています。

この状況では、関数がパラメーターの値を変更すると、渡される変数の値も変更されます。

ただし、PHP 5:

  • 呼び出し時間参照(例で示したように)は5.3で非推奨になりました
  • 関数シグネチャで指定されたときに参照渡しすることは非推奨ではありませんが、すべてのオブジェクトが参照渡しされるようになったため、オブジェクトには必要なくなりました。

詳細についてはこちらをご覧ください: 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
11
Rob Baillie

&=参照渡し:

参照により、2つの変数が同じコンテンツを参照できます。つまり、変数はそのコンテンツを指します(そのコンテンツになるのではなく)。参照渡しでは、2つの変数が異なる名前の同じコンテンツを指すことができます。アンパサンド(&)は、参照される変数の前に配置されます。

3
LightningBoltϟ

–参照渡し。文字列値の代わりに参照で渡されます。

3
user3069029

これは、文字列への参照をメソッドに渡すことを意味します。メソッド内の文字列に加えられたすべての変更は、コード内のそのメソッドの外部にも反映されます。

参照: PHPの=&演算子

例:

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

&演算子がなくても、変数に「test」が表示されます。

2
eX0du5