PHPの変数は、データを一時的に保存し、プログラムの実行中に使用するためのコンテナのようなものです。PHPでは変数を使うことで、値を格納し、計算や文字列操作などを簡単に行うことができます。本記事では、PHPの変数について詳しく解説します。

1. 変数の基本

PHPで変数を定義するには、ドル記号($)を使用します。

$greeting = "Hello, World!";
$number = 42;

変数のルール

  • 変数名は$から始める。
  • 変数名には英数字およびアンダースコア(_)を使用できる。
  • 変数名の最初の文字には数字を使用できない。
  • 変数名は大文字と小文字を区別する。

2. 変数のデータ型

PHPの変数は動的型付け言語の特性を持ち、値に応じて型が自動的に決まります。主なデータ型は以下の通りです。

スカラー型(単一の値を持つ型)

  1. 文字列(String)$string = "これは文字列です。";
  2. 整数(Integer)$integer = 100;
  3. 浮動小数点数(Float/Double)$float = 3.14;
  4. 論理値(Boolean)$bool = true;

複合型(複数の値を持つ型)

  1. 配列(Array)$array = ["りんご", "バナナ", "オレンジ"];
  2. オブジェクト(Object)class Person { public $name; function __construct($name) { $this->name = $name; } } $person = new Person("太郎");

特殊型

  1. NULL(変数が未定義または値がない状態)$nullVar = NULL;
  2. リソース(Resource)(データベース接続など特別なリソースを扱う型)$file = fopen("test.txt", "r");

3. 変数のスコープ(有効範囲)

PHPでは、変数のスコープ(使用できる範囲)が決まっています。

ローカル変数

関数内で定義された変数は、その関数内でのみ使用できます。

function test() {
    $localVar = "ローカル変数";
    echo $localVar;
}
test();
echo $localVar; // エラーになる

実行結果

グローバル変数

関数外で定義された変数は、関数内では直接使用できません。ただし、global キーワードを使用することで関数内でも利用可能になります。

$globalVar = "グローバル変数";
function testGlobal() {
    global $globalVar;
    echo $globalVar;
}
testGlobal();

または、$GLOBALS 配列を使ってグローバル変数にアクセスすることもできます。

function testGlobalArray() {
    echo $GLOBALS['globalVar'];
}
testGlobalArray();

静的変数 (static)

静的変数 (static 変数) は、関数内で定義しても値を保持し続ける変数 です。通常、関数内で定義したローカル変数は、関数が呼び出されるたびに初期化され、処理が終わると値が破棄されます。しかし、static キーワードを使うと、関数が呼び出されても変数の値がリセットされずに保持されるようになります。

function counter() {
    static $count = 0; // 静的変数として初期化
    $count++;          // 呼び出されるごとにインクリメント
    echo $count;
}

counter(); // 1
counter(); // 2
counter(); // 3

実行結果

なぜ static を使うのか?

  • 状態を継続したい場合
    関数が呼び出されるたびに前回の処理結果を引き継ぎたい場合に便利です。このサンプルでは、カウント数を引き継ぎながら表示しています。
  • グローバル変数と異なる点
    グローバル変数を使わなくても、関数内だけで継続状態を保持できます。余計なスコープの汚染を防ぐメリットがあります。
  • 毎回再計算する手間を省きたい時
    何度も呼ばれる関数の中で、一度だけ計算した結果を保持しておきたい場合などに使えます。

4. 変数の操作

変数の型を調べる

PHP には、変数がどのような型を持っているかを調べるための関数がいくつか用意されています。

var_dump($variable); // 変数の詳細情報を出力
is_int($variable);   // 変数が整数か確認(true/false で返す)
is_string($variable);// 変数が文字列か確認(true/false で返す)

var_dump()

変数の「型」と「値」を両方確認できる便利な関数です。たとえば、文字列であれば長さや文字列の内容、配列であれば要素の数や中身などが出力されます。

is_int() / is_string() など

is_XXX() 系の関数は型を判定して true / false を返します。他にも is_bool(), is_float(), is_array(), is_object() などが存在するため、必要に応じて使い分けられます。


変数の存在を確認する

isset($variable); // 変数が設定されているか確認
empty($variable); // 変数が空か確認

isset()

変数が「null ではなく、定義されているか」を確認します。変数が存在しない場合や値が null の場合は false、それ以外は true を返します。

empty()

変数が「空(0, “”, “0”, [], null など)かどうか」を確認します。
具体的には、次の条件のうちいずれかを満たすと true を返します。

  • 値が空文字列 ""
  • 値が数値の 0 や文字列 “0”
  • 値が null
  • 配列が空 []
  • 変数が存在しない
  • ブール値の false

これらのいずれかに当てはまらない場合は false となります。

isset() と empty() の違い

  • isset() は「変数が存在し、かつ null ではないか」をチェックする関数。
  • empty() は「値が空か (0, “”, [], null, false など)」をチェックする関数。

変数の削除

unset($variable); // 変数を削除

unset()

指定した変数を削除し、以後その変数は存在しなくなります。unset した変数にアクセスしようとするとエラーや警告が発生する可能性があります。また、同じ名前で再度定義すれば、新たな変数として扱われます。

まとめ

PHPの変数は、プログラムの中でデータを保存し、操作するために非常に重要な役割を果たします。変数の使い方を理解し、適切に管理することで、より効率的なコードを書くことができます。ぜひ、この記事を参考にPHPの変数の扱いに慣れてみてください!