PHPの変な仕様

  • このエントリーをはてなブックマークに追加

PHPの変な仕様を発見しました。

上記コードの出力結果print_r($arr1);は下記になります。

なぜか$arr1のindex:1だけ10加算されています!

これは、
$dummy = &$arr1[1];
で$dummyという変数に参照を代入した結果、
$arr1[1]と$dummyは同一の領域を指すことになる。

そのため$arr1を代入した$arr2の全要素に10加算した時に、
$dummyの値に10加算されるため、$arr1[1]の値だけ$dummy1と同じ1+10=11になるのだそうです。

これは危険な仕様ですね。

僕はC,Javaの後にPHPの学習を始めたため、
なかなか慣れないです。

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す