【PHP】変数の宣言と値の代入の方法について解説!サンプルコード多数!
![](https://flytech.work/wp-content/uploads/2020/06/code-944499_1280-3.png)
プログラム作成するのに当たって一番大事になってくるものがあります。
それは「変数」です。変数とは、データを保管するプログラム上の箱のようなものです。
これがないとプログラム作成できないと言っても過言ではないでしょう。
今回はPHPの「変数」について解説してきます。
変数とは
先ほども言いましたが、変数とは、データを保管するプログラム上の箱のようなものです。
変数には、「文字列」、「整数値」、「浮動小数点数値」、「論理値」、「配列」、「オブジェクト」、「リソース」、「NULL値」など
任意のデータ型の値を格納することができます。
変数の作成
変数の作成してみましょう。
変数は以下のように定義します。
1 2 3 4 5 |
<?php $変数名 = 格納するもの; ?> |
PHPの変数名は常に「$(ドル)」記号で始まります。
よく分からない人はダンボールをイメージすると分かりやすいと思います。
例えば、ダンボールにはたくさんのみかんが入っています。
あなたはそのダンボールの中にあるみかんを取り出すことができますし、みかんからブドウへと入れ替えたりすることもできます。
変数はそれと似ていて、変数の中身を取り出すことや、入れ替えることができます。
変数はどのプログラミング言語においても必要なものです。
よく覚えておきましょう。
変数の名前
例えば、リビングにみかんが入ったダンボールとブドウが入ったダンボールがあったとします。
しかし、どちらにに何が入っているのか分かりません。
その為、みかんが入っている方は「みかん」、ブドウが入っている方は「ブドウ」とダンボールに名前を書きます。
変数もこれと同じであり、短い名前(xやyなど)またはよりわかりやすい名前(age、carname、total_volume)を付けることができます。
しかし、PHPの変数名をつけるにあたって以下のルールが存在します。
・ 変数は$符号で始まり、その後に変数の名前が続きます
・ 変数名は、文字またはアンダースコア文字で始まる必要があります
・ 変数名は数字で始めることはできません
・ 変数名に使用できるのは、英数字とアンダースコア(Az、0-9、および_)のみです。
・ 変数名は大文字と小文字が区別されます($ageと $AGE二つの異なる変数です)
しかし、ここで気をつけておくべきなのは変数名の大文字小文字は区別されるということです。
例えば以下のように変数を定義したとします。
例
1 2 3 4 |
<?php $a = 34; $A = 34; ?> |
どちらも変数名が同じように見えますが、大文字小文字である為
変数aと変数Aは別の変数だとPC側が認識するようになります。
ですので、思っていた値が表示されなかった場合、変数が大文字と小文字で別の変数として
区別されているかもしれませんので注意しておきましょう。
変数の型
JavaやC言語みたいに、他の言語を触れてきた人はわかると思いますが、変数を定義する際には「型」というものがあり、
Javaだと以下のように定義していました。
Javaの変数定義の例
1 2 |
String a = "こんにちは"; int b = 123; |
型というのは、変数を定義する際にどのような値を格納するのか先に決めておく形みたいなものです。
つまり、先に形を決めてしまうと後から変更はできません。
例えば、引越しをする時にテレビをダンボールに入れたいけど、テレビが大きくて入らない場合があります。
その場合、別の大きなダンボールを準備しますよね。
よって「このダンボールにはテレビのような大きいものを入れて、別のダンボールには小物のような小さいものを入れよう。」
というようにダンボールのサイズによって何を入れるのかを決めます。
これが変数でいう「型」というものになります。
しかし、PHPでは、型は変数ではなく値に関連付けられているため、使用する前に変数の型を宣言する必要はありません。
その結果、変数はその値の型を必要なだけ変更できます。
1 2 3 4 |
<?php $a1 = 1; a1 = "AA" ?> |
NULL判定
NULLの変数は、値が割り当てられていない変数です。
値なしで作成された変数には、自動的にNULLの値が割り当てられます。
また、値をNULLに設定することにより、変数を空にすることもできます。
例
1 2 3 4 5 |
<?php $a = "aaaaa"; $a = null; echo($a); ?> |
出力結果
NULL
宣言されていない値がまだ代入されていない変数は初期化をすることをおすすめします。
変数を使ったサンプルコード
変数を使ったサンプルコードをみてみましょう。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $a1 = 4; $A1 = 5; $aA1 = $a1 + $A1; echo "a1とA1の合計は$aA1\n"; $A1 = "こんにちは。" ; echo "$A1"; ?> |
出力結果
a1とA1の合計は9
こんにちは。
可変変数とは
可変変数とは一度定義した変数名を途中で変更する(可変化する)変数のことを言います。
通常、PHPの変数名は、一度決めたら、ずっとその名前で利用します。
しかし、変数名を可変にしたい場合があります。
その場合に、可変変数を使用します。
可変変数の作成
可変変数は以下のように作成します。
1 2 3 4 |
<?php $変数名A= 'a'; $$変数名A= 'b'; ?> |
可変変数を使ったサンプルコード
例
1 2 3 4 5 6 7 8 9 10 |
<?php $name="flytech"; echo $name; echo "\n"; $$name = "フライテック"; echo $$name; echo "\n"; echo $flytech; ?> |
出力結果
flytech
フライテック
フライテック
スコープ
PHPでは、変数はスクリプト内の任意の場所で宣言できます。
スコープには、変数が作成されて関数内でアクセスされるローカルスコープと、
変数が作成されて関数外でアクセスされるグローバルスコープの2種類があります。
また、静的変数としてstaticを使った変数を定義捨こともできます。
グローバルスコープ
関数の外部で宣言された変数にはグローバルスコープがあり、関数の外部でのみアクセスできる変数になります。
グローバルスコープの以下のように作成します。
1 2 3 4 |
<?php function メソッド名() { global $変数名 = "格納したい値"; } |
ここでグローバルスコープを使った例を見てみましょう。
例
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $a = 2; $b = 4; $ab = 0; function multi() { global $a, $b, $ab; $ab = $a * $b; } multi(); echo $ab; ?> |
出力結果
8
ローカルスコープ
関数内で宣言された変数にはローカルスコープがあり、その関数内でのみアクセスできる変数になります。
グローバルスコープの以下のように作成します。
1 2 3 4 5 |
<?php function メソッド名() { $変数名 = "格納したい値"; } ?> |
普段の変数定義と変わらないと思ってもかまいません。
ここでローカルスコープを使った例を見てみましょう。
例
1 2 3 4 5 6 7 8 9 |
<?php function test() { $flytech = "フライテック"; echo "<p>$flytechの値は$flytech</p>"; } test(); echo "<p>$flytechの値は$flytech</p>"; ?> |
出力結果
PHP Notice: Undefined variable: flytech in /workspace/Main.php on line 9
static
スタティック変数はその関数の中でしか使用できませんが、関数が終了しても破棄はされません。
スタティック変数を宣言するには、staticキーワードを使用します。
1 2 3 4 5 |
<?php function メソッド名(){ static 変数名 = "格納したい値"; } ?> |
スタティック変数を使った例を見てみましょう。
例
1 2 3 4 5 6 7 8 9 10 11 |
<?php function test() { static $a = 3; echo $a; $a++; } test(); test(); test(); ?> |
出力結果
345
![](https://flytech.work/wp-content/uploads/2020/10/Screenshot_20200901_171117-150x150-1-150x150.jpg)
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。
![](https://flytech.work/wp-content/uploads/2021/09/flyhawk_c3.png)