• ベストアンサー

newについて

とても初歩的な質問ですいません。 PHP4.4.0を使用していますが、 $a =& new foo(); と $a = new foo(); の違いは何なのでしょうか? よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

new に限ったことではありませんが、& は参照渡しという方法です 参照渡しかコピー渡しかの違いです 簡単に説明すると $moji = "moji"; $a = &$moji; $moji .= "retsu"; echo $a; とすると、mojiretsu と表示されます が $moji = "moji"; $a = $moji; $moji .= "retsu"; echo $a; とすると moji としか表示されません この例だと 何の意味があるのかよくわからんと思いますが 1 例えば$moji に膨大な量の配列が入っていたとします この場合 $a = $moji ではコピー渡しをしますから、同一内容のものが二つ($aと$moji)作られてしまい、メモリを食うことになり コピー作業をする部分で処理が遅くなります ですから、$moji を 参照渡しにするとこで、$a は $moji のエイリアスのような存在になります $a を $mojiのダミー的な変数 として扱うことによりメモリを節約し動作を早くすることができます 2 $mojiの内容が頻繁に変わる場合 いちいち必要になるたびに $a = $moji としていたのではコーディング作業も面倒だし、$mojiの内容をいちいち把握していないとどのタイミングで$a = $moji と書いていいのかわけわからなくなります 一度、 $a = &$moji としておけば、$mojiの内容が変わると同時に$aの内容も変わってくる という使い方ができます

touchme
質問者

お礼

とても丁寧なご回答ありがとうございます。 参照渡しのことがよくわかりました!

その他の回答 (1)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

<?php $foo = 'Bob'; // 値'Bob'を$fooに代入する。 $bar = &$foo; // $fooを$barにより参照 $bar = "My name is $bar"; // $barを変更... echo $bar; echo $foo; // $fooも変更される。 ?>

参考URL:
http://jp.php.net/manual/ja/language.variables.php
touchme
質問者

お礼

お礼が遅くなりましてすいません。 方とあわせて見させていただきましたが、 参照渡しというのがあるんですね。 勉強になりました。ありがとうございます。