これらは両方ともPHPステートメントは同じことをしていますか?:
$o =& $thing;
$o = &$thing;
はい、両方ともまったく同じものです。オブジェクトの参照を取得し、変数$o
内で参照するだけです。 thing
は変数でなければならないことに注意してください。
構文的に言えば、それらは同じものではありません。演算子はアトミック=&であり、これは実際に重要です。たとえば、3項式では=&演算子を使用できません。次のいずれも有効な構文ではありません。
$f = isset($field[0]) ? &$field[0] : &$field;
$f =& isset($field[0]) ? $field[0] : $field;
したがって、代わりにこれを使用します:
isset($field[0]) ? $f =& $field[0] : $f =& $field;
両方とも、予想されるT_PAAMAYIM_NEKUDOTAYIMエラーを返します。
$o = &$thing;
その後、事の参照をoに割り当てます。以下に例を示します。
$thing = "foo";
$o = &$thing;
echo $o; // echos foo
$thing = "bar";
echo $o; // echos bar
違いは非常に重要です。
<?php
$a = "exists";
$b = $a;
$c =& $a;
echo "a=".$a.", b=".$b.", c=".$c."<br/>"; //a=exists b=exists c=exists
$a = null;
echo "a=".$a.", b=".$b.", c=".$c; //a= b=exists c=
?>
変数$ cは、$ aがNULLになると消滅しますが、変数$ bはその値を保持します。
はい、彼らがやります。 $o
は、両方の場合でthing
の- 参照 になります(thing
は定数ではなく、実際には変数として意味のあるものと仮定します)。
thing
の前に$
を付けた場合、両方とも参照によって割り当てられます。参照の詳細については、PHPこちら: http://www.php.net/manual/en/language.references.whatdo.php をご覧ください。