よろしくお願いします。
以下のコードについてなのですが
PHP
1<?php 2 $bar = 3; 3 $baz = 1; 4 5 function test (int $var){ 6 return $GLOBALS["baz"] + $var; 7 } 8 9 echo test($bar); 10?>
上記を実行した場合は結果として4
となりますが、グローバルエリアで$baz
を再度echo
すると1
とでます。てっきり$baz
の定義はグローバルエリアで上書きされ値は、4
になったのかと思いましたが1
のままでした。
これは、$baz
が4
として定義されているのは関数内のローカルリアのみであって、返り値でもらってきた数字はその結果に過ぎないためという事なのでしょうか。
echo test($bar)
以降はローカルでの$baz
は4
になっており、グローバルエリアでの$baz
は1
のままという事でしょうか。
また、$baz
の値を上書きする際にグローバルエリアから再定義せずに、関数内の処理をグローバルエリアの定義として反映させる方法ありましたでしょうか。
恐縮ですが、アドバイスいただけますと幸いです。