PHP ローカル変数とグローバル変数(global)

PHPのローカル変数とグローバル変数のサンプルです。

確認環境
・PHP 7

目次

サンプル ローカル変数とグローバル変数
  関数内からグローバル変数を参照するやり方

ローカル変数とグローバル変数

  • ローカル変数は関数の中にある変数です。変数を宣言した関数内でのみ利用できます。
  • グローバル変数は関数の外にある変数です。
  • 変数が通用する範囲のことをスコープといいます。
  • 別々の関数のローカル変数は同じ変数名でも可です。
  • グローバル変数とローカル変数は同じ変数名でも可です。

ローカル変数とグローバル変数を使用したサンプルです。

<?php
$a = "123"; //グローバル変数

function test1(){
	$b = "456"; //ローカル変数
	return $b;
}

print $a; //123
//print $b; //表示不可
print test1(); //456

2行目は、グローバル変数です。
5行目は、ローカル変数です。
9行目は、グローバル変数の値を表示しています。
10行目は、5行目の変数bが関数の中にあるのでアクセスできずエラーになります。
11行目は、関数test1を実行して戻り値の値を表示しています。

 

関数内からグローバル変数を参照するやり方

関数内からグローバル変数を参照するやり方です。

1.関数内から直接参照はできない

<?php
$a = "123"; //グローバル変数

function test1()
{
    return $a;
}

print $a; //123
//print test1(); //表示不可

2行目は、グローバル変数です。
6行目は、2行目のグローバル変数を参照しようとしますがPHPの仕様としてできません。
9行目は、グローバル変数の値を表示できます。
11行目は、関数test1を実行しようとしますが、6行目の変数aの値を取得できないのでエラーになります。

2.globalを使用してアクセスする

<?php
$a = "123"; //グローバル変数

function test1(){
	global $a;
	return $a;
}

print $a; //123
print test1(); //123

2行目は、グローバル変数です。
5行目は、変数の前にglobalがあります。このため2行目のグローバル変数を参照できるようになります。
11行目は、関数のtest1を実行できます。

3.関数の引数としてグローバル変数を渡してアクセスする

<?php
$a = "123"; //グローバル変数

function test1($a){
	//global $a;
	return $a;
}

print $a; //123
print test1($a); //123

2行目は、グローバル変数です。
11行目は、関数の引数にグローバル変数の$aをセットして関数に渡しています。
→6行目は、$aの値を取得できます。
4行目の仮引数の$aは、ローカル変数になります。

以下は、PHPマニュアルの変数のスコープのリンクです。
http://php.net/manual/ja/language.variables.scope.php

関連の記事

PHP ユーザー定義関数のサンプル

△上に戻る