第5章 変数とデータ型
5.1 データの入れ物になる変数
プログラムでは、データを取り扱う場合に必ず変数というデータの入れ物を利用します。この変数に入っているデータを出し入れすることで、データに応じた処理を行っていきます。
5.1.1 変数について知っておこう
プログラムが初めての方は、「変数(へんすう)」という言葉を初めて耳にしたのではないでしょうか。言葉の意味をそのまま見ると「へんなかず」となってしまいそうですが、変わった数やおかしな数でもありません。変数は英語で「variable」となりますので、「変化する数」という意味が近いでしょう。
変数は、よく箱に例えられます。では何を入れる箱なのかというと、プログラムの処理で扱うデータを入れる箱になります。
図 5.1.1:データの入れ物変数イメージ
実際のコンピュータの中にこのような箱が用意される訳ではありません。少し難しい話になりますが、コンピュータにはメモリと呼ばれるデータを記憶できるものがあり、プログラムの処理中に扱うデータは、メモリのどこかの領域に保存されます。
プログラムから簡単にデータを扱うために、その領域に名前を付けたものが変数となるのです。変数を利用すると一時的にデータを保存でき、別の場所でもそのデータを何度も使うことが可能になります。
5.1.2 変数の名前の付け方
変数にはプログラマ自身が名前を付けます。次に示すルールにさえ従えば、自由に名前を付けることができます。名前を付けるルールのことを命名規則といいます。
変数の命名規則- 変数名の先頭は必ず「$(半角ドル)」で始まる。
- 使用できる文字は「半角英数字」と「_(アンダーバー)」のみ利用できる。
- $の後の先頭文字に「数字」は利用できない。
- 英字の大文字、小文字は「区別される」ので、1文字でも違えば同じ単語名でも利用できる。
上記の命名規則を守り、どのような用途なのかが分かるように分かりやすい名前を変数につけましょう。
5.1.3 変数の使い方
変数の使い方はとても簡単で、以下の流れになります。
①変数にデータを入れる。
②変数に入れたデータを見る。
①の変数にデータを入れる操作のことを「代入」、②の変数に入れたデータ見ることを「参照」ということもあります。また変数のデータを見ることは、プログラムでは使うことと同じ意味になります。
図 5.1.2: 変数の使い方(入れる、見る)イメージ
5.1.4 変数を使ってみよう
では実際に変数をプログラムで使うための手順を説明します。まずは変数を利用できるように宣言を行います
書式:変数の宣言
凡例:変数の宣言
例えば、凡例の1つ目の$varをイメージにすると以下のようになります。
図 5.1.3: 変数の宣言(メモリ領域の確保)
凡例:変数の宣言が出来ない場合
変数の宣言は、命名規則に必ず従う必要があります。
変数を宣言すると、コンピュータのメモリ上にデータを保存する領域を確保してくれます。これでデータの入れ物が準備できました。しかしまだこのままでは入れ物はからっぽのままです。
入れ物(変数)の中に値を入れるには代入演算子である「=(イコール)」を使用します。演算子については他にも種類があり、後の7章で詳しく説明します。
書式:変数への値の代入
代入演算子「=」の右側の値が左側の変数に代入されます。
凡例:変数への値の代入
例えば、「$val = 2011;」の処理が実行される場合は、以下の図のようなイメージになります。
図 5.1.4: 変数へ値の代入
宣言した変数に初めて値を代入することを、変数の初期化、その値を初期値と呼びます。
ポイント変数に値を代入したい場合は代入演算子「=」を使って行う。また、プログラムの世界では「=」は代入を表しており、同じという意味にはならない
変数に代入したデータを利用するプログラム
変数にデータを代入して、そのデータをWebブラウザに表示して確認してみましょう。
ソース・フォルダー: myproj_intro/ch05
パッケージ: variable.php
アクセスURL:http://localhost/myproj_intro/ch05/variable.php
variable.php
解説
このプログラムでは3つの変数が宣言され、それぞれに値を代入しています。
まずは3行目で、名前用の変数「$name」を宣言し、同時に初期値として文字列の「”神田ハナコ”」を代入しています。
続いて6行目で、身長用の変数「$height」を宣言し、同時に初期値として小数点付きの数値の「154.6」を代入しています。
最後の1つ9行目で、年齢用の変数「$age」を宣言し、同時に初期値として数値の「26」を代入しています。
図 5.1.5: 各変数に各データを代入
各変数の準備が終わった後は<body>タグ内で、先程準備した変数を利用してWebブラウザに出力を行います。
先ずは、17行目でecho文を利用して変数$name、$heightと文字列を出力しています。
変数名をプログラムでは指定していますが、プログラムで変数を使うということは、変数の中のデータを参照することになります。結果Webブラウザへ出力する文字列は、以下の図5.1.6のようなイメージになります。
図 5.1.6: 変数$nameと$heightを出力命令文でWebブラウザへ出力する
18行目の処理も17行目と同じように、echo文で変数$ageのデータと文字列を表示させています。
図 5.1.7: 変数$ageを出力命令文でWebブラウザへ出力する
ポイント
- 変数を利用すると様々なデータを格納することができる。
- 変数を出力命令文で表示させると、変数の中のデータをWebブラウザへ出力してくれる。
変数の中のデータは参照してもなくならない変数を参照した場合、データを取り出してなくなったように感じた方もいるかもしれませんが、実際はそうではありません。参照はあくまでも使っただけで、中のデータはそのまま変数に残ります。
変数のデータは何度でも使うことができる仕組みになっているのです。
5.1.5 変数のデータを入れ替えよう
変数は1度初期化した後でも別のデータを代入することができ、データを自由に変更することができます。
書式:変数への値の再代入
凡例:変数への値の再代入
データの入れ替えはとても簡単です。初めてデータを入れたように、再度、同じ変数に代入演算子の「=」を使って新しい値を入れてあげればデータの入れ替えは行えます。
変数のデータを途中で変更するプログラム
変数のデータを違うデータに変更して、その結果をWebブラウザに表示して確認してみましょう。
ソース・フォルダー: myproj_intro/ch05
パッケージ: changeVariable.php
アクセスURL:http://localhost/myproj_intro/ch05/changeVariable.php
changeVariable.php
解説
このプログラム前回のvariable.phpに少し処理を追加したプログラムになっています。その追加部分に関して説明していきます。
18行目の年齢を表示した処理の後の21行目で、年齢の変数「$age」の値を「27」に入れ替える処理をしています。変数に値を再代入すると既に入っていた「26」は無くなり、新しく入れた「27」に入れ替わります。
図 5.1.8: 変数$ageを出力命令文でWebブラウザへ出力する
そして23行目では、echo文で再度年齢変数の「$age」をWebブラウザに出力しています。結果として初めに代入した「26」ではなく、途中で入れ替えた「27」という数値が出力されているのが確認できます。
ポイント
- 変数にデータの代入は自由に何度でも行える
- 変数に別のデータを入れた場合、最初に入っていたデータはなくなる。
5.1.6 変数に別の変数のデータを入れよう
変数には、普通の数値や文字データだけではなく、別の変数のデータを代入することもできます。
そうすることで2つの変数に同じ値を持たせることもできます。
書式:変数に別の変数のデータを代入
変数へ別の変数のデータを入れるのは、データを代入するように、変数に代入演算子の「=」を使って別の変数を代入してあげればデータのコピーが行えます。
凡例:変数に別の変数のデータを代入
変数から別の変数への代入は値のコピーになります。$var2の変数の中には$var1と同じ値が代入され、$var1の値はそのまま残ります。結果$var1と$var2の値は同じものになります。
上記の凡例のイメージを図にすると以下のようになります。
図 5.1.9: 変数へ別の変数の値を代入
では実際にプログラムで確認してみましょう。
変数へ別の変数の値を代入するプログラム
変数へ別の変数の値を代入しどちらも同じ値になることを、Webブラウザに表示して確認してみましょう。
ソース・フォルダー: myproj_intro/ch05
パッケージ: variableAssignment.php
アクセスURL:http://localhost/myproj_intro/ch05/variableAssignment.php
variableAssignment.php
解説
まず3行目で変数$jStationに「新宿」という値を初期値として代入しています。
続いて6行目では3行目で用意した$jStationの値を$wStationに代入しています。
図 5.1.10: 変数$wStationへ別の変数$jStationの値を代入
14、15行目で3、6行目で用意した変数を使ってWebブラウザへメッセージを出力する処理を行っています。
実行結果からも分かるように、変数$jStationの値も、その値を代入した変数$wStationも「新宿」と表示され、変数を別の変数に代入して値のコピーが行えていることが確認できます。
ポイント
- 変数には別の変数の値を代入することが出来る。
- 変数に別のデータを入れた場合、データはコピーされ別の変数のデータはそのまま残る。