はじめに
参照渡しの理解が曖昧だったため、値渡しと比較しながら整理する。
参照渡しと値渡しの違い
二つの違いの前に・・・
そもそも変数とは
値の格納先に対して付けられた値札のようなもの
値を格納するのはメモリの役割。しかし、コードに意味のない番号を記述するのは見た目的にわかりにくいし、タイプミスの原因にもなる。
そこで、人間がわかりやすいように名前をつけるようにした。それが変数。
値による代入
値による代入とは、メモリ上の値を別のアドレスにコピーすること。
代入した変数と代入された変数は別物なため、元の変数が変更されても、代入された変数が影響を受けることはない。
ref_val.php
<?php
$x = 1;
$y = $x;
$x = 5;
print $y //1
参照による代入
参照による代入とは、メモリ上のアドレスそのものを引き渡す代入のこと。
元の変数と代入された側の変数が同じ値を見ていて、元の変数に対して加えた変更は代入された側の変数にも及ぶ。
ref_val.php
<?php
$x = 1;
$y = &$x;
$x = 5;
print $y //5