PHPの値渡し・参照渡し
<?php echo '---------------------------<br>'; // 変数。 $a = 0; var_dump($a); echo '<br>'; function write1($arg) { $arg = 1; } write1($a); var_dump($a); echo '<br>'; write1(&$a); var_dump($a); echo '<br>'; echo '---------------------------<br>'; // 配列。 $b = array(0); var_dump($b); echo '<br>'; function write2($arg) { $arg[0] = 2; } write2($b); var_dump($b); echo '<br>'; write2(&$b); var_dump($b); echo '<br>'; echo '---------------------------<br>'; // オブジェクト。 class Hoge { public $c = 0; }; $hoge = new Hoge(); var_dump($hoge); echo '<br>'; function write3($arg) { $arg->c = 3; } write3($hoge); var_dump($hoge); echo '<br>'; write3(&$hoge); var_dump($hoge); echo '<br>'; ?>
---------------------------
int(0)
int(0)
int(1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
array(1) { [0]=> int(0) }
array(1) { [0]=> int(0) }
array(1) { [0]=> int(2) }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
object(Hoge)#1 (1) { ["c"]=> int(0) }
object(Hoge)#1 (1) { ["c"]=> int(3) }
object(Hoge)#1 (1) { ["c"]=> int(3) }
まとめ。
変数を値渡し→値渡し。
配列を値渡し→値渡し。
オブジェクトを値渡し→実際は参照渡し。
ちなみに配列は実際は参照渡しだが、関数内で変更が入った時にコピーされるらしい。
screw-axis.com - このウェブサイトは販売用です! - リソースおよび情報