PHPの文字列・配列・オブジェクト(インスタンス)の値渡し・参照渡しについて
<?php require_once "test_class.php"; echo "【文字列】\n"; $sa = "aa"; $sb = $sa; $sb = "*******"; var_dump($sa); var_dump($sb); echo "\n"; echo "【配列】\n"; $aa = array("aa","bb","cc"); $ab = $aa; $ab[1] = "*******"; var_dump($aa); var_dump($ab); echo "\n"; echo "【オブジェクト】\n"; $oa = new Test(); $oa->setTest("aa"); $ob = $oa; $ob->setTest("*******"); var_dump($oa->getTest()); var_dump($ob->getTest());
<?php // "test_class.php" class Test { var $test = ""; function getTest() { return $this->test; } function setTest($test) { $this->test = $test; } }
結果
【文字列】 string(2) "aa" string(7) "*******" 【配列】 array(3) { [0]=> string(2) "aa" [1]=> string(2) "bb" [2]=> string(2) "cc" } array(3) { [0]=> string(2) "aa" [1]=> string(7) "*******" [2]=> string(2) "cc" } 【オブジェクト】 string(7) "*******" string(7) "*******"
PHPでは文字列・配列が値渡し、オブジェクト(インスタンス)は参照渡しになります。文字列・配列を参照渡ししたい場合は、
$sb = &$sa; //のように&を付けてやります。
ちなみに関数に渡すときも全く同じです。
/* $xxは、文字列・配列・オブジェクト(インスタンス) */
hoge_func($xx); //値渡し ※$xxがオブジェクト(インスタンス)の場合は参照渡しになります
hoge_func(&$xx); //参照渡し