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); //参照渡し

なおJavaでは文字列が値渡し、配列・オブジェクト(インスタンス)が参照渡しになります。

にほんブログ村 IT技術ブログへ
1票ポチッと押して下さい♪このブログのランキングが少し上がります。