PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

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では通知や警告の対象となります。予期しないバグを防ぐためにも、変数は使用前に必ず初期化する習慣を身につけましょう。

  1. 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 − 取得し

  2. PHPのextract()関数とは?使い方とパラメータを徹底解説

    extract()関数とはPHPのextract()関数は、配列のキーと値を現在のシンボルテーブルに変数としてインポートする関数です。連想配列の各要素が「キー名=変数名、値=変数の値」として展開され、戻り値としては正常に抽出された変数の個数が返されます。構文extract(arr, rules, prefix)パラメータarr − 変数として展開したい対象の配列を指定します。rules − 無効な変数名や既存変数との衝突(コンフリクト)が発生した場合の扱い方を指定します。指定できる値は以下の通りです。EXTR_OVERWRITE − デフォルト値。同名の変数が既に存在する場合、既存の変数を上書