最近、PHP 配列のコピーを作成しようとしましたが、値を含む配列のコピーではなく、コピーに値への参照を含めたいと考えていました。
これに対する私の主な動機は、関数をおよび関数call_user_func_array
と組み合わせて使用して、準備済みステートメントを処理するためのラッパー関数を作成することでした。mysqli_stmt_bind_param
mysqli_stmt_bind_result
これを行う方法を理解しようとしているときに、次のコードに出くわしました。
$arr = array(1, 2, 3, 4); // The array to make a copy of with references
$ref_arr = array(); // The new array that will contain the references
foreach ($arr as $key => &$val) {
$ref_arr[$key] = &$val;
}
上記のコードは、配列内の要素が値自体ではなく値への参照であることを除いて、最初の配列と同じ2番目の配列を作成することで、実際に私が望むものを提供しますが、それがどのように機能するかわかりません。
アンパサンド ( ) が PHP で何をするかは理解していますが、 foreach ループ内の の&
両方のインスタンスを として参照する必要がある理由がわかりません。$val
&$val
上記の foreach ループで正確に何が起こっているかを誰かが説明できれば、非常に感謝しています。
どうもありがとう。