PHPでglobalキーワードを使用してみます。
メインのプログラムの変数を関数に持ち込んだり、その逆を行うことがあります。このような時に、関数内の変数の前にglobalキーワードを使用することができます。
globalキーワードを使用することで、変数をグローバル変数に変えることができます。グローバル変数に変わったことで、関数の内部と外部の両方で変数を表示またはアクセスすることが可能になります。
■環境
・Windows10
・WampServer Version 3.2.3 64bit
・PHP Version 7.3.21
■globalキーワードを使用し、グローバル変数に変えて関数の内部と外部の両方からアクセスする
では、globalキーワードを使用し、グローバル変数に変えて関数の内部と外部の両方からアクセスしてみます。
■コード
<?php
$hello = "こんにちは";
function test(){
global $hello;
echo $hello;
}
test();
echo $hello;
?>
今回はtestという関数を宣言した外で、helloという変数を宣言します。helloという変数には、文字列を格納しておきます。
testという関数では、中括弧”{}”を記述し、その中に実行する処理を記述します。記述する内容は、helloという変数を定義し、その前にglobalキーワードを使用し、グローバル変数に変えます。
変えた後に、echo文でhelloという変数の情報を出力するというものです。
記述後、testという関数の外に、関数の名前を記述し、関数を呼び出します。またecho文でhelloという変数の情報も出力してみます。
■実行
では、このスクリプトを「hello.php」という名前で保存し、実行させてみます。
実行してみると、globalキーワードを使用したことで、関数の内部と外部の両方から変数にアクセスすることができました。
■globalキーワードを使用しない場合
では、ここで実験です。globalキーワードを使用しない場合はどうなるのでしょうか。やってみます。
■コード
<?php
$hello = "こんにちは";
function test(){
echo $hello;
}
test();
echo $hello;
?>
testという関数を宣言し、その中にはglobalキーワードを使用していません。
■実行
では、このスクリプトを「hello.php」という名前で保存し、実行させてみます。
Notice: Undefined variable: hello in C:\wamp64\www\project\hello.php on line 5
実行してみると、エラーが発生しました。エラーの内容は「未定義の変数」というものです。testという関数の外で定義したhelloという変数を、関数の内部からアクセスできないため、関数の内部には、helloという変数が定義されていません。定義されていないhelloという変数をecho文で出力しようとしているため、エラーが発生しています。
コメント