PHP変数の基本をマスター!命名ルールから参照代入・未初期化変数の挙動まで
PHP変数の基本ルール
PHPの変数名は、必ずドル記号($)から始まります。「$」の直後には英字(A~Zの大文字・小文字のいずれか)またはアンダースコア(_)を1文字置き、その後は英字・数字・アンダースコアを任意の数だけ組み合わせることができます。さらに、PHPの変数名は大文字と小文字が区別されるため、「$var」と「$VAR」は完全に別の変数として扱われる点に注意しましょう。
有効な変数名と無効な変数名の例
// 有効な変数の例 $var=10; $VAR="Hello"; // $varとは別の変数として扱われる $marks_1=67; $_val=0; // 無効な変数の例 var=10; // $で始まっていない $4sqr=16; // 英字またはアンダースコアで始まっていない $my name="Hello"; // 変数名に空白は使用できない $my$name="Hello"; // 先頭以外で$は使用できない
参照による値の代入
PHPでは、別の変数への参照として値を代入することもできます。参照代入を行うには、代入元の変数名の前にアンパサンド(&)を付けます。参照で結ばれた変数は同じ値を共有しているため、一方の値を変更すると、もう一方の値にも同じ変更が反映されます。
サンプルコード
<?php $var1="Hello"; $var2=&$var1; echo $var1 . " " . $var2 . "\n"; $var2="Hi there"; echo $var1 . " " . $var2 . "\n"; ?>
実行結果
Hello Hello Hi there Hi there
$var2へ$var1の参照を代入した後で$var2の値を「Hi there」に変更すると、$var1の値も同時に変化しており、両変数が同じ値を参照していることが確認できます。
未初期化変数のデフォルト値
初期化されていない変数には、使用されるコンテキスト(文脈)に応じたデフォルト値が設定されます。
- 整数型・浮動小数点型の変数:0
- 真偽型(boolean):FALSE
- 文字列型:空文字列
ただし、比較的新しいバージョンのPHPでは、未初期化変数を利用すると「Undefined variable」の通知が出力されます。
サンプルコード
<?php $var1=10; $var2=$var1+$var2; echo $var1 . " " . $var2 . "\n"; $x="Hello"; unset($x); var_dump($x); // 未初期化状態 ?>
実行結果
10 10 NULL PHP Notice: Undefined variable: var2 PHP Notice: Undefined variable: x
加算演算における未初期化変数
次の例は、累算加算の処理において未初期化変数を使用したケースです。
サンプルコード
<?php $sum=$sum+10; var_dump($sum); ?>
実行結果
int(10) PHP Notice: Undefined variable: sum
未初期化の$sumは整数コンテキストで0として評価されるため、10を加算した結果であるint(10)が出力されます。
空の値からのデフォルトオブジェクト生成
次の例では、空の値からデフォルトオブジェクトが自動的に生成され、警告が出力されます。
サンプルコード
<?php $obj->name="XYZ"; var_dump($obj); ?>
実行結果
object(stdClass)#1 (1) {
["name"]=>
string(3) "XYZ"
}
PHP Warning: Creating default object from empty value
まとめ
PHPの変数は「$」で始まり、大文字と小文字が厳密に区別されます。参照代入(&)を利用すれば複数の変数で同一の値を共有できる一方、未初期化変数はコンテキストに応じたデフォルト値を持つものの、最近のPHPでは通知や警告の対象となります。予期しないバグを防ぐためにも、変数は使用前に必ず初期化する習慣を身につけましょう。
-
PHPのfilter_input()関数とは?使い方とパラメータを解説
PHPのfilter_input()関数は、GETやPOSTなど外部から送信された変数を名前で取得し、必要に応じてフィルタリング(検証・サニタイズ)を行うことができる関数です。ユーザー入力を安全に扱うための重要な関数の一つであり、セキュリティ対策の観点からも広く利用されています。構文filter_input(type, var, filtername, options)パラメータtype − チェック対象となる入力の種類を指定します。指定できるのは以下の5種類です。INPUT_GET、INPUT_POST、INPUT_COOKIE、INPUT_SERVER、INPUT_ENVvar − 取得し
-
PHPのextract()関数とは?使い方とパラメータを徹底解説
extract()関数とはPHPのextract()関数は、配列のキーと値を現在のシンボルテーブルに変数としてインポートする関数です。連想配列の各要素が「キー名=変数名、値=変数の値」として展開され、戻り値としては正常に抽出された変数の個数が返されます。構文extract(arr, rules, prefix)パラメータarr − 変数として展開したい対象の配列を指定します。rules − 無効な変数名や既存変数との衝突(コンフリクト)が発生した場合の扱い方を指定します。指定できる値は以下の通りです。EXTR_OVERWRITE − デフォルト値。同名の変数が既に存在する場合、既存の変数を上書