と の違いを理解しようとしてい$a=&$bます$a=$b。&変数を参照変数にすることはわかっています。しかし、次のテストでも同じ結果が得られました。誰でも違いを説明できますか?ありがとう。
$a=5;
$b=6;
$a=&$b;
echo $a; //6
$a=5;
$b=6;
$a=$b;
echo $a; //6
と の違いを理解しようとしてい$a=&$bます$a=$b。&変数を参照変数にすることはわかっています。しかし、次のテストでも同じ結果が得られました。誰でも違いを説明できますか?ありがとう。
$a=5;
$b=6;
$a=&$b;
echo $a; //6
$a=5;
$b=6;
$a=$b;
echo $a; //6
まず第一に、参照はほとんど必要ないでしょう。できれば参照を使用する際の混乱を避けてください。
$a=5; //assign value to a
$b=&$a; //make $b a reference to $a
$b=6; //assigning a value to $b assigns the same value to $a (as they point to the same location
echo $a; //6
$a=5; //assign a value to a
$b=$a; //set $b to the value of $a
$b=6; //set $b to another value leaves $a at it's original value
echo $a; //5
割り当てで&を使用すると、新しい変数が元の変数への「ショートカット」であると考えることができます。&を使用しない場合は、オリジナルの「コピー」になります。
$a = 5;
$b =& $a; // this $b is like a shortcut to $a. Change $b and $a will change too
$a = 5;
$b = $a; // this time, $b will be 5 - but not a shortcut to $a. Change $b and $a will still be 5.
リファレンスは簡単なグラフで簡単に説明できます。値によるコピー( )を使用すると$a = $b、次のようなことが起こります。
$a = 1000;
# $a -----> 1000
$b = $a;
# $a -----> 1000
# $b -----> 1000
# (two "pieces of memory" has been used)
しかし、$anamedへの新しい参照を作成すると$b、次のようなことが起こります。
$a = 1000;
$b =& $a;
# $a --\
# --> 1000
# $b --/
# (one "piece of memory" has been used but two different names ($a, $b) point on it)
パラメータとして送信すると、関数でより重要になります。
例えば:
<?php
function changeVariableWithReference(&$var)
{
$var += 1;
}
function changeVariableWithoutReference($var)
{
$var += 1;
}
$a = 5;
$b = 5;
changeVariableWithReference($a);
changeVariableWithoutReference($b);
print $a . ' ' . $b;
?>
次のコードに従うと、ANSが得られます(いくつかの行を追加しました)
$a=5;
$b=6;
$a=&$b;
echo $a; //6
$b = 8;
echo $a; //8
$a=5;
$b=6;
$a=$b;
echo $a; //6
$b = 20;
echo $a; //6
&シンプルな変数ポイント$aで変数$b
なし&で、$bコピーするだけです$a
$a = $bとの違いは$a =& $b、前者の代入演算子では値がコピーされるのに対し、後者の参照演算子では変数$aが と同じ値を参照すること$bです。
値を読み取るときは違いはわかりませんが、値を書き込むときは違いがわかります。
$var = 123;
$copyOfVar = $var;
$referenceToVar =& $var;
$copyOfVar = 456;
echo 'var='.$var.'; copyOfVar='.$copyOfVar;
// "var=123; copyOfVar=456"
$referenceToVar = 456;
echo 'var='.$var.'; referenceToVar='.$referenceToVar;
// "var=456; referenceToVar=456"