【PHP】関数の参照を理解する問題

php

【問題】
下記のソースコードの出力結果はどうなるでしょうか

<?php

$test = array("aaa","bbb","ccc");

function & findOne($a){
    global $test;
    return $test[$a];
}

$test2 = & findOne(1);
$test2 = "ddd";

var_dump($test);

【答え】

array(3) {
  [0]=>
  string(3) "aaa"
  [1]=>
  &string(3) "ddd"
  [2]=>
  string(3) "ccc"
}

PHPでは、変数の値にコピーオンライト方式を使っているので、関数の結果を参照で返す必要はない。結果を参照で返すと、値自身を返すのに比べて処理が遅くなってしまう。

コメント

タイトルとURLをコピーしました