前は値渡し、参照渡しについて書いたけど、今回は関数を使った値渡し、参照渡しについてだよ!٩( ᐛ )و
// 値渡し 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に渡した後の値 : 参照渡しされた
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 : 値渡しされた
func_atai_watashiに渡した後の値 : ٩( ᐛ )و
func_sansyo_watashiの関数の中のvalue : 参照渡しされた
func_sansyo_watashiに渡した後の値 : 参照渡しされた
func_atai_watashiの関数の中のvalue変数は”値渡しされた”にちゃんとなっていますね🤔
この辺は値渡し、参照渡しというよりはローカル変数、グローバル変数、スコープ等々の問題なのですが、それも参照渡しを使えば上手くクリアできるよ!という話でした!
この辺の理解が足りないと、関数の中の値はちゃんと変わっているのに、関数の外いくと値が変わらない〜となってしまうので気をつけましょう!
それではさよなら〜٩( ᐛ )و