5

と の違いを理解しようとしてい$a=&$bます$a=$b&変数を参照変数にすることはわかっています。しかし、次のテストでも同じ結果が得られました。誰でも違いを説明できますか?ありがとう。

 $a=5;
 $b=6;

 $a=&$b;
 echo $a; //6


 $a=5;
 $b=6;

 $a=$b;
 echo $a; //6
4

6 に答える 6

14

まず第一に、参照はほとんど必要ないでしょう。できれば参照を使用する際の混乱を避けてください。

$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
于 2010-07-24T17:11:20.090 に答える
1

割り当てで&を使用すると、新しい変数が元の変数への「ショートカット」であると考えることができます。&を使用しない場合は、オリジナルの「コピー」になります。

$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.
于 2010-07-24T18:07:04.650 に答える
1

リファレンスは簡単なグラフで簡単に説明できます。値によるコピー( )を使用すると$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)
于 2010-07-24T18:16:56.740 に答える
1

パラメータとして送信すると、関数でより重要になります。

例えば:

<?php
function changeVariableWithReference(&$var)
{
  $var += 1;
}

function changeVariableWithoutReference($var)
{
  $var += 1;
}

$a = 5;
$b = 5;

changeVariableWithReference($a);
changeVariableWithoutReference($b);

print $a . ' ' . $b;

?>
于 2010-07-24T17:13:10.733 に答える
1

次のコードに従うと、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

于 2010-07-24T17:14:54.207 に答える
1

$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"
于 2010-07-24T17:15:17.487 に答える