たとえばこんな関数を作ります。
$y = 0; $m = 20; pr($y); pr($m); function hoge($y, $m) { $y = 1; $m = 22; } hoge($y, $m); pr($y); pr($m);
結果はもちろんこうなります。
0
20
0
20
また、
$y = 0; $m = 20; pr($y); pr($m); function hoge($y, $m) { $y = 1; $m = 22; } hoge(&$y, &$m); pr($y); pr($m);
こちらは
0
20
1
22
関数を使用するときに引数はポインタを使うようにしており、
ポインタを使って変数のアドレスに直接アクセスしているから。
前者はデータのコピーを使っているので、スコープが限定されてしまう。
$y = 0; $m = 20; pr($y); pr($m); function hoge(&$y, &$m) { $y = 1; $m = 22; } hoge($y, $m); pr($y); pr($m);
こちらは
0
20
1
22
cとかだとここでエラーになるみたいです。c++やったことあるけど、忘れました。すみません。