PHPの基礎 - 変数
概要
変数は文字列や数値の値を格納するために使用する。
単に値を保持するだけではなく、変数そのものに対して演算することも可能である。
変数の宣言と値の代入
PHPの変数は、値そのものを変数に格納する。
変数は事前に宣言は必要は無く、値を格納した時点からその変数を使用することができる。
変数を使用するには、変数名と変数に格納する値を使用する。
変数は、$ + <変数名>
で表される。
$<変数名> = <値>;
変数名として使用できる文字列は、先頭がアンダーバーまたはアルファベットで始まる。
変数名は、大文字・小文字は区別されて、英数字やアンダーバー以外の記号で変数名を始めることはできない。
変数に値を格納するには、代入演算子=
を使用する。
$old = 20;
$name = '加藤';
数値や文字列等の値が変数に格納されると、変数は値のように扱うことができる。
例えば、変数をprint
文等で出力すること、および、数値が格納された変数を他の数値と演算することもできる。
$name = '加藤';
print $name;
$num = 20;
print $num * 9;
変数は、他の変数を格納することもできる。
以下の例では、変数num1に格納された値が変数num2にコピーされている。
$num1 = 320;
$num2 = $num1;
PHPにおける変数は各変数が値を保管しているため、任意の変数を別の変数に代入する時、元の変数の値を複製して別の変数に格納する。
変数の初期化とNULL
変数は、値を格納していない状態でも使用することができる。
以下のように、1度も値が代入されておらず、初期化していない変数には、NULLが格納されていると見なされる。
print $name; // $name = NULL;と同じ意味
// 変数には値が格納されていないため、出力しても何も表示されない (ただし、エラーではない)
NULL
は、データ型の1つで値が存在しないことを表す。
明示的に、変数にNULL
を代入することにより、変数には値が存在していない状態となる。
大文字・小文字は区別しないため、Nullやnullも使用できる。
変数のデータ型
数値や文字列等の値にはデータ型が存在するが、PHPの変数はどのデータ型でも同じように格納することができる。
そのため、変数の型を宣言する必要はない。
$name = 'Yamada';
$old = 24;
また、任意の値が格納された変数に対して、別のデータ型の値を再度格納することもできる。
変数に型が存在しないわけではなく、自動的に格納された値の型に変換される。
$var = 'Yamada';
$var = 24;
以下の例では、gettype関数を使用して、引数の値や変数の型を確認している。
格納された値に応じて、変数のデータ型も変換されていることが確認できる。
<?php
$var = '高橋';
print '[値]'.$var.',';
print '[型]'.gettype($var).'<br />';
$var = 180;
print '[値]'.$var.',';
print '[型]'.gettype($var)
?>
変数の参照
PHPは、他の変数への参照を設定することも可能である。
他の変数への参照を設定するには、以下のように記述する。
=&
を使用することで、右辺の変数のエイリアスとして左辺の変数を設定する。
これにより、右辺の変数が格納された値に左辺の変数名でも参照することができる。
<変数名> =& <他の変数名>
以下の例では、変数num1の値を後から変更する場合、変数num2が格納している値も同じように変更される。
$num1 = 320;
$num2 =& $num1;
$num1 = 45;
様々な代入演算子
変数には、演算結果の格納や文字列同士の連結した結果を格納等ができる。
$num = 80 * 15;
$pref = '愛知';
$address = $pref.'県';
PHPには、以下の示す演算子が用意されている。
+=, -=, *=, /=, %=, .=
以下の例では、.=
演算子を使用して文字列を連結している。
$str = '山田';
$str .= 'さん';
定数
定数は、数値や文字列等の値を、理解しやすい文字列として値を定義して使用する。
定数の定義は、以下のように記述する。
define("<識別子>", <値>);
識別子として使用できる文字列は、先頭がアンダーバーかアルファベットで始まる必要がある。
大文字・小文字は区別されるが、慣習的に定数名は全て大文字を使用される。
変数名とは異なり、先頭に$
は必要ない。
以下の例では、商品単価に消費税を加えたものを計算している。
消費税は5[%]として計算しているが、いずれ変更される可能性もあるため、0.05という数値の代わりに定数TAXを定義する。
このように、消費税率が変更されても定数TAXの定義を変更するだけで済む。
define("TAX", 0.05);
$price1 = 100 * (1 + TAX);
$price2 = 84 * (1 + TAX);
$price3 = 180 * (1 + TAX);
値として指定できるのは文字列、数値、論理値のいずれかである。
define("TAX", 0.05);
define("PAI", 3.14159);
define("COPYRIGHT", "Copyright (C) 2008 XXX. All Rights Reserved.");