すでに存在するものを参照していない限り、参照によって何かを割り当てることはできません。同様に、存在しないものはコピーできません。
ので、このコード:
$a = array(1,2,3);
...コピーまたは参照でもない - それはちょうど値は文字通り、指定されたため、新しい配列は、値でそれを埋め作成されます。しかしながら
、このコード:
$x = 1;
$y = 2;
$z = 3;
$a = array($x,$y,$z);
... $x
、$y
と$z
からコピーした値を配列に。配列値を初期化するために使用される変数は、依然としてそれ自体で存在し、配列内の値に影響を与えずに変更または破棄することができます。
このコード:
$x = 1;
$y = 2;
$z = 3;
$a = array(&$x,&$y,&$z);
は...(&
に気付く)$x
、$y
と$z
への参照の配列を作成します。このコードを実行した後に$x
を変更した場合 - 私は4の値を与えます - それは配列の最初の値も変更します。したがって、配列を使用すると$a[0]
には4
が含まれます。
PHPでの参照の仕組みの詳細については、マニュアルのthis sectionを参照してください。アレイメンバーとして使用される変数の型と値に応じ
、コピー操作は、値による割り当てられた場合にも割り当て時に起こるかもしれません。内部的にPHPは、パフォーマンスとメモリ効率の理由から、できるだけ多くの状況でコピーオンライトを使用します。ただし、コードのコンテキストでの動作に関しては、単純なコピーとして扱うことができます。
あなたはちょうどそれがで配列を割り当てることは可能ですかどうかを知りたいと思っています参照?あるいは、自動的にそれを設定する方法があるかどうか知りたいですか? – jprofitt
私は、時にはPHpエンジンが$ a = array(1,2,3)を渡すことができることを知りたいと思います。 $ b = $ a; '&'記号なしで参照してください。 – RusAlex