カテゴリー:
変数
閲覧数:436 配信日:2016-03-21 21:43
3通り
A.リファレンスの代入
B.リファレンス渡し
C.リファレンスを返す
A.リファレンスの代入
2つの変数が同じ内容(同じ場所)を指す
・$a と $b は同じ内容を指す
・$a と $b は完全に 同じ
・$a が $b を 指しているわけではない、その逆でもない
$a =& $b;
B.リファレンス渡し
変数のリファレンス渡し
・関数でローカル変数が作成される
・呼出側の変数が、それと同じ内容への リファレンスとなる
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
echo $a; //6
C.リファレンスを返す
両方の場所で & を使用する必要がある
・返されたリファレンスを使うには、リファレンスを代入しなければならない
= &
関数 getValue により返された オブジェクトのプロパティ($this->value)に&を付与
・つまり、$myValue = &(foo::$value);
class foo {
public $value = 42;
public function &getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue は $obj->value へのリファレンス、つまり 42 となります
$obj->value = 2;
echo $myValue; // $obj->value の新しい値である 2 を表示します
リファレンスを返さない通常の例
class foo {
public $value = 42;
public function getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = $obj->getValue(); // $myValue は $obj->value へのリファレンス、つまり 42 となります
$obj->value = 2;
echo $myValue; //42