- ベストアンサー
newについて
とても初歩的な質問ですいません。 PHP4.4.0を使用していますが、 $a =& new foo(); と $a = new foo(); の違いは何なのでしょうか? よろしくお願いします!
- みんなの回答 (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の内容も変わってくる という使い方ができます
その他の回答 (1)
- tany180sx
- ベストアンサー率63% (239/379)
<?php $foo = 'Bob'; // 値'Bob'を$fooに代入する。 $bar = &$foo; // $fooを$barにより参照 $bar = "My name is $bar"; // $barを変更... echo $bar; echo $foo; // $fooも変更される。 ?>
お礼
お礼が遅くなりましてすいません。 方とあわせて見させていただきましたが、 参照渡しというのがあるんですね。 勉強になりました。ありがとうございます。
お礼
とても丁寧なご回答ありがとうございます。 参照渡しのことがよくわかりました!