どうも、りょーです。
業務でPHP触る機会あったんだけど、↓みたいに引数に「&」が付いてて「ナニコレ???」ってなった。
PHP入門者だからね。仕方ないね。
<?php
function fugafuga (&$hogehoge) {
...
?>
今後のためにまとめとく。
目次
変数の前に付いてる「&」(アンド、アンパサンド)= 変数を参照渡しするためのもの
リファレンスによると、変数の前に「&」を付けることで参照渡しでやり取りすることになるらしい。
リファレンスにより関数に変数を渡すことが可能です。この場合、関数内で その引数を修正可能になります。
PHP: リファレンス渡し
参照渡し(リファレンス渡し)って?
参照渡し(リファレンス渡し)とは、「データの入った箱そのもの」を渡すイメージ。
(実際は、「データの入ったメモリの番地情報」を渡す。)
参照渡しとよく並んで出てくるのが、値渡し。
値渡しとは、「データの入った箱のコピー」を渡すイメージ。
値渡しだと、渡された変数をいじっても、はこ2に入ってるデータをいじってるだけだから、はこ1のデータは何も変わらない。
参照渡しでは、渡された変数をいじる=はこ1をいじることになるので、当然データも変わる。
実際に書いてみる
参照渡し
<?php
$osushi = "金目鯛";
function tabetai (&$osushi) {
$oniku = &$osushi;
$oniku = "黒毛和牛";
print $osushi . "食べたい";
}
tabetai($osushi);
?>
実行結果
置き換わっとるね!
参照渡しする時は「&」を明示する必要あるから事故りにくくていいかも?
値渡し
<?php
$osushi = "金目鯛";
function tabetai ($osushi) {
$oniku = $osushi;
$oniku = "黒毛和牛";
print $osushi . "食べたい";
}
tabetai($osushi);
?>
実行結果
参照渡しと違って、$osushiは書き変わってないね。
コメント