【php】変数のスコープ(有効範囲)の解説

変数スコープの解説php
書いてる人
あいりゅー

プログラミングを学びながら更新しています。
iPhone/iPad/Mac/Apple WatchなどのApple製品はこちらで主に更新しています。
麻雀の反省をひたすら掲載してるブログもやってます。

あいりゅーをフォローする

このページについて

このページではphpの変数のスコープ(有効範囲)について解説しています。phpで変数を扱う上で重要になってくるので使いこなせるようにしておきましょう。

変数とは

そもそも変数って何?や、今回出てくる変数にまつわる演算子などの解説はphpの変数解説をご覧ください。

簡単にいうと、変数とは値を一時的に保存しておく仮の器みたいなものです。その変数を呼び出せばその中身を自由に呼び出す事ができますし、別の計算処理などに与えれば計算結果を変えることもできます。

変数のスコープについて

phpを始め、プログラミング言語では変数を扱える範囲が決まっている事が多いです。その理由は変数の中身が一度変わればその後の処理も全て変わるため、バグの原因にもなるためです。なので変数の中身が変わらないように扱える範囲が限定されています。

phpにはローカルとグローバルの2種類があり、それぞれ使える範囲が異なります。

ローカル
functionなどのユーザー定義関数の中にある{}の中だけで使える変数です。
グローバル
functionなどの{}の外ならいつでも呼び出せる変数です。

簡単にいえば{}内で使えるか使えないかって感じですね。基本的にはこの違いを覚えておけばOKです。

ローカル

ローカルは{}の中で使える変数と書きましたが、実際どういうことかサンプルと共に紹介します。

function test() {
$x=1;
}
echo $x; //不発

この場合、$xが定義されているのは{}内だけです。そのため一番下にあるechoでは呼び出すことはできません。

グローバル

次にグローバルの詳しい解説です。これは{}の外ならいつでも呼び出せるという書き方をしましたが、これもサンプルと共に解説します。

$x = 1;
function test() {
$x += 1;
}
test();
echo $x;

この場合何が出力されるかというと、1です。functionの中で+=1がありますが、これは無視されます。{}の外ならと書いた通り、{}の中では呼び出す事ができません。そのため何も処理をせずに一番下のechoのみが出力されます。そしてfunctionはundifined(未定義)エラーが出ます。

グローバルをローカルで使う

グローバルにある変数をローカルで使いたい場合もありますが、そういう場合にはglobalを使えば解決します。

$x = 1;
function test() {
global $x;
$x += 1;
}
test();
echo $x;

この場合、どちらも$xは計算後の2が入っています。今回使ったglobalはfunctionの外にある変数をfunction内で使えるようにするという効果があります。

スコープが関係無いパターン

そもそもスコープが関係無いパターンもあります。if文やswitchなどですね。基本的にはユーザー定義のfunctionだけはスコープに厳しいです。なのでfunctionを使うときはglobalを使って変数を使えるようにしましょう。

まとめ

phpの変数はスコープによって使える場面と使えない場面があるため、globalで変数を宣言して使いましょう。

phpの基礎
phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
echoとprint
画面に文字を出力する2種類の言語構造の使い方
変数
phpで使える変数の扱い方などを解説しています。
変数のスコープ(有効範囲)
変数のスコープについての解説です。
var_dump
変数の情報を見ることができる関数
print_r
変数の情報をわかりやすい形式で表示する関数
配列と連想配列
配列と連想配列の書き方と、便利な関数の解説など。
key
連想配列のキーを返してくれます。内部ポインタ関係あり。
count
配列や連想配列の要素数を数えてくれる関数の使い方解説。
ソート関数
配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
array_reverse
配列の中身の順番を反転させる関数です。
array_chunk
配列を指定した数で分割させるarray_chunk関数の使い方解説です。
array_combine
2つの配列を足して1つの連想配列にする関数です。
array_diff
2つの配列を比較して、存在しない値を出力する関数
array_push
配列に対して後方に要素を追加する関数
array_unshift
配列に対して先頭に要素を追加する関数。
array_shift
配列の先頭の要素を取り出す関数。
array_merge
複数の配列を統合して1次元の配列にする関数
array_intersect
2つの配列を比較して、両方に共通するものを出力する関数
include
includeを使って別のphpファイルを読み込む方法の解説。
if文
if文を使って処理を変更させる方法の解説。
switch文
switch文を使って複数の処理分岐を行わせたい時に使います。
forループ
forループを使って同じ処理を行わせる方法の解説です。
whileループ
whileループを使って同じ処理を行わせる方法の解説と注意点。
do-whileループ
do-whileループを使って同じ処理を行わせる方法の解説です。
foreachループ
foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
continue
ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
ループのネスト構造(入れ子)
ループの中にループを入れる書き方や考え方の解説。
function
functionを使って自作の関数を作成・使用する方法の解説。
引数の種類と書き方解説
functionで扱う引数の種類と書き方を解説
return
returnの使い方と関数での使い方解説。
class
classを作成して変数と関数を1つにまとめる方法と使い方の解説。
constructとdestruct
classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
インターフェイス
インターフェイスという用語の解説と、実際の使い方解説
トレイト
コードを再利用するのに便利なトレイトの解説です。
列挙型
プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
PDOを使ってMySQLへ接続
PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
データの加工と表示
PDOでデータベースから取得したデータを加工して表示する方法の解説です。
HTMLフォームのデータ受け取りと表示
HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。
タイトルとURLをコピーしました