PHPにおける参照
PHPでは、ある変数の値を 別の変数に代入することができます:
<?php
$num1 = 1;
$num2 = $num1; // 代入
echo $num1; // 1
echo $num2; // 1
?>
このような代入では、新しい変数には 元の変数の値のコピーが書き込まれます。 これは、変数同士が何の関連もなく、 独立して変更できることを意味します。 以下のコード例を見てください:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - 変化なし
?>
しかし、変数の値ではなく、 その値への参照をコピーするようにすることもできます。 この場合、一方の変数の値を変更すると、 もう一方の値も変更されます。
値による代入ではなく参照による代入を行うには、 変数名の前にアンパサンドを置きます:
<?php
$num1 = 1;
$num2 = &$num1; // 参照を渡す
?>
これで、最初の変数を変更すると 二番目の変数も変更されます:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - 変更された
?>
同様に、最初の変数を変更すると、 二番目の変数も変更されます:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
次のコードを実行した結果を 説明してください:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
次のコードを実行した結果を 説明してください:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
次のコードを実行した結果を 説明してください:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
次のコードを実行した結果を 説明してください:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>