【PHP】これだけ覚えれば大丈夫!構文1 – 変数 –

PHP

更新履歴

更新日更新者更新内容
2021/8/1JJIサンプルプログラムの出力結果に画面の画像を追加

変数

変数は値を入れるものです。
PHPの変数名は常に半角ドル記号($)で始まり、大文字、小文字は区別されます。
変数の付け方の例は次の通りです。

<?php
    $name;
    $NAME;          // 変数の場合、大文字、小文字は区別されるので、$nameと違う変数になる
    $Name;          // 小文字は区別されるので、$nameと違う変数になる
    $loop_count;
    $DataMax;
    $TEST_STR;
    $_int_var;
?>

PHPの変数は次のサンプルプログラムのように整数、文字列などの型を指定しません。

<?php
    $str1 = "ハロー";                   // 文字列の変数
    echo "文字列の変数:" . $str1 . "<br>\n";

    $num1 = 25;                         // 整数の変数
    echo "整数の変数:" . $num1 . "<br>\n";

    $num2 = -25;                        // 負の整数の変数
    echo "負の整数の変数:" . $num2 . "<br>\n";

    $double1 = 13.25;                   // 小数の変数
    echo "小数の変数:" . $double1 . "<br>\n";
 ?>

実行結果は次の通りです。

・画面

・HTML

PHPの構文1<br>
文字列の変数:ハロー<br>
整数の変数:25<br>
負の整数の変数:-25<br>
小数の変数:13.25<br>

このブログでは、PHPのコードで変数を使うことをわかりやすくするため、次のルールでつけます。

変数の使用のルール
  • 変数はコードの先頭に記述し、コメントをつける
  • 変数名は大文字、小文字で区別できるが、わかりにくいため、変数名は小文字のみ使用する
  • 単語と単語の間の文字はアンダースコア(_)を使用する。

変数のスコープ

変数は、変数が有効になる範囲(スコープ)が存在します。
例えば、次のようなコードの場合、関数外と関数内の変数は別々のものとして扱われます。

<?php
    echo "PHPの構文1<br>\n";
    echo "変数のスコープ<br>\n";

    $str1 = "テスト";        // 関数外の変数、関数内は有効にならない

    // 関数
    function output_str(): void {
        $str1 = "aaaa";     // 関数内のみ有効
        echo '$str1:' . $str1 . "<br>\n";
    }

    // 関数内の変数の表示
    output_str();
    // 関数外の変数の表示
    echo '$str1:' . $str1 . "<br>\n";
 ?>

実行結果は次の通りで関数外と関数内の変数は同じ名前であっても別々の変数として扱われ、表示内容が異なっていることが分かります。

・画面

・HTML

PHPの構文1<br>
変数のスコープ<br>
$str1:aaaa<br>
$str1:テスト<br>

このように変数にはスコープが存在していることを意識し、プログラミングを行う必要があります。
ただ、難しく考える必要はなく、基本的に次のようになっていることを覚えるだけで大丈夫です。

  • 関数内の変数は、関数内のみ有効である
  • 関数外の変数は、関数内には有効にならない

基本的に上記のことを覚えておけば大丈夫ですが、特別な変数が存在するので紹介しておきます。
よくわからない場合は使用しない方がよいです。

関数のことを知りたい方は次の記事を詳しく書いています。
分からない方は見ることをおすすめします。

globalキーワード

関数などのスコープ内の変数を外から変更できるキーワードとして、globalキーワードが存在します。
globalキーワードを使用した変数はグローバル変数と呼ばれることが多いです。
グローバル変数は次のように書きます。

global $var;

実際のサンプルプログラムを見た方が早いと思うので、次に載せておきます。
ただし、グローバル変数は自由にどこでも変更でき、プログラムの動作は非常にわかりにくくなるため、使用しない方がよいです。
このブログではグローバル変数は一切使用しません。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    echo "【PHP】関数<br>\n";
    echo "関数の変数<br>\n";

    function foo() :void {
        global $var;       // global変数で宣言

        echo '$var:' . $var . "<br>\n";
    }

    // 関数外の変数、同一の名前
    $var = 3;

    // 関数の呼び出し、関数内の変数が変わっている
    foo();
?>

実行結果は次の通りです。
関数内の変数は関数の外から変更可能なことが分かります。

【PHP】関数<br>
関数の変数<br>
$var:3<br>

静的変数

静的変数(スタティック変数)は関数内で定義しますが、関数の処理が終了しても値が保持される特長があります。
静的変数もグローバル変数と同様にプログラムの動作が分かりにくいため、当ブログでは一切使用しません。

静的変数は次のように変数の前にstaticキーワードをつけます。

static $var;

実際のサンプルプログラムを見た方が早いので載せておきます。
静的変数を使用した場合、関数が終了し、再度呼び出した場合、値が保持された状態から処理を行っていることが分かります。

<?php
    echo "PHPの構文1<br>\n";
    echo "変数のスコープ 静的変数<br>\n";

    // 普通の変数を使用した関数
    function output_no_static(): void {
        $num = 0;       // 普通の変数
        echo '普通の変数:$num:' . $num . "<br>\n";
        $num++;
    }

    // 静的変数を使用した関数
    function output_static(): void {
        static $num1 = 0;       // スタティック変数、初回呼び出し時のみ初期化
        echo '静的変数:$num:' . $num1 . "<br>\n";
        $num1++;
    }

    // 普通の変数の場合、関数の値は常に初期化される
    output_no_static();
    output_no_static();
    output_no_static();

    // 静的変数の場合、初期化は1回のみ、値が保持され、呼び出す場合に加算される
    output_static();
    output_static();
    output_static();
 ?>

実行結果は次の通りです。

・画面

・HTML

PHPの構文1<br>
変数のスコープ 静的変数<br>
普通の変数:$num:0<br>
普通の変数:$num:0<br>
普通の変数:$num:0<br>
静的変数:$num:0<br>
静的変数:$num:1<br>
静的変数:$num:2<br>

定義済み変数

PHPには定義済み変数があります。
PHPで本格的なWebプログラムを書く場合に使用することが多いです。
このブログでは、Webプログラムを書くときに紹介します。

PHPマニュアルでは次のページに載っています。

PHP: 定義済みの変数 - Manual

コメント