PHPにおける変数の扱い
プログラミング言語により変数の扱いは様々なです。例えば、JavaやC#のような言語では、変数を利用する場合、変数名とデータの種類とをあらかじめ宣言しておく必要があります。
しかし、PHPでは便利なことに変数の宣言を必要としない言語です。PHPにおいては、スクリプト内で変数が利用されたタイミングで、自動的に変数の為の領域がメモリ上に確保されます。
まずは、その変数の例を実際のコードにしながら見てみましょう。
変数を利用したPHPの例 <?php
$data='変数の内容を入力しておきます';
print($data);
?>
hensu.php(実行結果)
上記の例では、 「$data」という名前の変数が使用された時点でメモリが確保され、そのメモリ内に「変数の内容を入力しておきます」という文字列が格納されます。
「=」という表示は、数学と同様で左辺と右辺が等しいという意味合いです。変数には、それぞれの容器を区別するために名前をつける必要があります(この場合はdata)。変数名は自由につけることができますが、いくつかの決まりがあります。
- 変数名は「$」で始まること
- 変数名の二文字目は英字かアンダースコア(_)のいずれか
- 変数の三文字目以降は英数字かアンダースコアであること
- 変数名の大文字と小文字は区別される
変数のデータ型
PHPで取扱が可能なデータには様々な種類があります。「文字列」「数値」「TURE/FALSE(真偽型)」などが挙げられます。このようなデータの種類のことを「データ型」と呼びます。
C#やJavaなどはこのデータ型を強く意識するプログラムといわれています。そのため、文字列を格納するために用意した変数に数値をセットすることはできませんし、その逆もできません。これらの言語では、それぞれのデータ型に応じた専門の入れ物が用意されています。
しかし、PHPの場合データ型を基本的に意識することはありません。変数の方が中身に応じて自動的に形を変えてくれます。つまり、次のようなスクリプトでもPHPでは正しいコードとして扱うことができます。
$data='変数1';
$data=152;
ただし、厳密な演算局面ではPHPでもデータ型を念頭に置いたコーディングを行いましょう。バグなどの原因となります。
次の表にPHPで取り扱うことができるデータ型を示します。この時点で全てを理解する必要はないのですが、このようなものがあるという認識でいてください。
データ型 |
概要 |
例 |
| 真偽型(boolean) |
TUREまたはFALSE |
$flag=TURE; |
| 整数型(integer) |
10進数、16進数(0xではじまる)
8進数(0ではじまる) |
$cut=1; |
浮動小数点型
(double,float,real) |
|
$num=100.0132; |
| 文字列型(string) |
文字列 |
$title='PHP入門'; |
| リソース型(resource) |
外部リソースへの参照 |
$src=opendir('./data');) |
上記の表で特に注意がひつようになるのは、文字列型の変数となります。
文字列型の値を代入する場合、PHPでは値をダブル(シングル)クオーテーションで囲む必要があります。ダブルクオーテーションとシングルクオーテーションのどちらを利用するかは文字列に含まれている変数を展開するかという点で区別します。
この区別について以下のスクリプトで解説します。
hensu2.php <?php
$title='PHP入門';
$data1="「$title」はPHPを始める方のための入門サイトです。<br />";
$data2='「$title」はPHPを始める方のための入門サイトです。<br />';
print($data1);
print($data2);
?>
$data1と$data2の違いはダブルクオーテーションで区切っているか、シングルクオーテーションで区切っているかの違いです。
表示結果を見ていただければ、わかると思いますが、ダブルクオーテーションの場合、変数を変数と認識して表示しますが、シングルクオーテーションで区切った場合は、$titleを変数とは認識せずにそのまま表示しています。
つまりPHPのスクリプトにおいて、変数として認識させたくない場合は、値をシングルクオーテーションで表示します。
ただし、ダブルクオーテーションで表示する場合でも、次のように変数名と文字列との境目が不明確である場合、変数が正しく認識されない場合があります。変数名の前後は空白で明確に区切ることをお勧めします。
$data="「$titlea」
この場合、$titleが変数で、aはただの文字列。この場合、正しく認識しないことがあるので、
「$title a」のように空白を残すと良い。
データ型のキャスト
PHPは非常に寛大な解釈をしてくれる言語ですが、値の厳密な比較や演算を行う場合や小数点以下の数字を整数に変換するなどのケースでは「型キャスト」と呼ばれるしくみを利用して変数に対してデータ型を強制的に割り当てるようにすると、より確実な計算gあできるようになります。
型キャストを行う場合は、変換したい変数の直前で「データ型」の形式で型指定を実施します。詳しくは以下のサンプルをご覧ください。
cast.php
<?php
$data=1234.567
print((int)$data+
?>
実行結果
1234
この場合、少数データが含まれていた変数$dataの内容がキャストにより整数に変換されています。
ちなみに、型キャストで利用が可能なデータ型は以下の通りとなります。
型 |
概要 |
| (bool),(boolean) |
TURE/FALSE型のキャスト |
| (double),(float),(real) |
浮動小数点型へのキャスト |
| (int),(integer) |
整数型へのキャスト |
| (string) |
文字型列へのキャスト |
| (object) |
オブジェクト型へのキャスト(別途解説します) |
|