【PHP】関数を使った値渡し、参照渡し٩( ᐛ )و

以前の記事の続きだよ!

前は値渡し、参照渡しについて書いたけど、今回は関数を使った値渡し、参照渡しについてだよ!٩( ᐛ )و

// 値渡し
function func_atai_watashi($value) {
    $value = "値渡しされた";
}
// 参照渡し
function func_sansyo_watashi(&$value) {
    $value = "参照渡しされた";
}

$value = "٩( ᐛ )و";
echo "関数に入れる前の値: {$value}";

func_atai_watashi($value);
echo "func_atai_watashiに渡した後の値 : {$value}";
func_sansyo_watashi($value);
echo "func_sansyo_watashiに渡した後の値 : {$value}";

一見すると、$value変数を関数に渡して代入しているから

func_atai_watashiに渡した後の値 : 値渡しされた
func_sansyo_watashiに渡した後の値 : 参照渡しされた

となりそうですね🤔

実行結果
関数に入れる前の値: ٩( ᐛ )و
func_atai_watashiに渡した後の値 : ٩( ᐛ )و
func_sansyo_watashiに渡した後の値 : 参照渡しされた

 
結果はご覧の通りです!
参照渡しした関数は変わってますが、値渡しされたところは値が変わってませんね!
これは別の変数として扱われているからなのですが、もうちょっと深掘りしましょう!

// 値渡し
function func_atai_watashi($value) {
    $value = "値渡しされた";
    echo "func_atai_watashiの関数の中のvalue : {$value}<br/>";
}
// 参照渡し
function func_sansyo_watashi(&$value) {
    $value = "参照渡しされた";
    echo "func_sansyo_watashiの関数の中のvalue : {$value}<br/>";
}

$value = "٩( ᐛ )و";
echo "関数に入れる前の値: {$value}<br/>";

func_atai_watashi($value);
echo "func_atai_watashiに渡した後の値 : {$value}<br/>";
func_sansyo_watashi($value);
echo "func_sansyo_watashiに渡した後の値 : {$value}<br/>";

はい!関数の中の変数はどうなっているか見てみましょう!

٩( ᐛ )و実行結果٩( ᐛ )و
関数に入れる前の値: ٩( ᐛ )و
func_atai_watashiの関数の中のvalue : 値渡しされた
func_atai_watashiに渡した後の値 : ٩( ᐛ )و
func_sansyo_watashiの関数の中のvalue : 参照渡しされた
func_sansyo_watashiに渡した後の値 : 参照渡しされた

 
func_atai_watashiの関数の中のvalue変数は”値渡しされた”にちゃんとなっていますね🤔

この辺は値渡し、参照渡しというよりはローカル変数、グローバル変数、スコープ等々の問題なのですが、それも参照渡しを使えば上手くクリアできるよ!という話でした!

この辺の理解が足りないと、関数の中の値はちゃんと変わっているのに、関数の外いくと値が変わらない〜となってしまうので気をつけましょう!

それではさよなら〜٩( ᐛ )و