PHP 変数

変数は情報を保存する容器です:

<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

実行例

代数のように

x=5
y=6
z=x+y

代数では、値(例えば 5)を保存するためにアルファベット(例えば x)を使用します

上の式 z=x+y から、zの値は11であることが計算できます

PHP では、これらの3つのアルファベット(例えば x)は変数

注記:変数をデータを保存する容器として考えてください。

PHP 変数

代数のように、PHP 変数は値(x=5)や式(z=x+y)を保存できます

変数の名前は短いこともあります(例えば x と y)、またはより記述的な名前を取ることもあります(例えば carname、total_volume)。

PHP 変数の規則:

  • 変数は $ 符号で始まり、その後は変数の名前が続きます
  • 変数名はアルファベットまたはアンダースコアで始まる必要があります
  • 変数の名前は数字で始まることはできません
  • 変数の名前はアルファベット数字およびアンダースコア(A-z、0-9および_)で構成できます。
  • 変数の名前は大文字小文字を区別します($yと$Yは異なる変数です)

注記:PHP変数の名前は大文字小文字を区別します!

PHP変数の作成

PHPには変数の作成コマンドはありません。

変数は最初に値が割り当てられるときに作成されます:

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

実行例

以上の文を実行すると、変数txtは"Hello world!"の値を保存し、変数xは5の値を保存し、変数yは10.5の値を保存します。

注記:変数にテキストとしての値を割り当てる場合は、その値を引用符で囲んでください。

PHPはタイプ緩い言語です。

上の例では、PHP変数のデータ型を教える必要はありません。

PHPは、その値に応じて、自動的に正しいデータ型に変換します。

CやC++、Javaなどの言語では、プログラマーは変数を使用する前にその名前と型を宣言する必要があります。

PHP変数スコープ

PHPでは、スクリプトのどこでも変数を宣言できます。

変数のスコープとは、変数が参照/使用できるスクリプトの部分を指します。

PHPには三種類の異なる変数スコープがあります:

  • local(ローカル)
  • global(グローバル)
  • static(静的)

LocalとGlobalスコープ

関数外部宣言された変数はGlobalスコープを持ち、関数以外でのみアクセスできます。

関数内部宣言された変数はLOCALスコープを持ち、関数内でのみアクセスできます。

以下の例では、ローカルおよびグローバルスコープを持つ変数をテストしています:

<?php
$x=5; // グローバルスコープ
function myTest() {
  $y=10; // ローカルスコープ
  echo "<p>関数の内部の変数のテスト:</p>";
  echo "変数xは:$x";
  echo "<br>";
  echo "変数yは:$y";
} 
myTest();
echo "<p>関数の外部の変数のテスト:</p>";
echo "変数xは:$x";
echo "<br>";
echo "変数yは:$y";
?>

実行例

上の例では、二つの変数$xと$y、および関数myTest()があります。$xは関数の外部で宣言されたため、グローバル変数です。一方で、$yは関数内で宣言されたため、ローカル変数です。

myTest()関数の内部で二つの変数の値を出力すると、$yはローカルで宣言された値を出力しますが、$xの値を出力することができません。なぜなら、それが関数の外部で作成されたからです。

myTest()関数の外部で二つの変数の値を出力すると、$xの値が表示されますが、$yの値は表示されません。なぜなら、それがmyTest()内で作成されたローカル変数だからです。

注記:異なる関数で同じ名前のローカル変数を作成することができますが、ローカル変数はその変数が作成された関数だけで認識されます。

PHP global キーワード

global キーワードは、関数内でグローバル変数にアクセスするために使用されます。

これを実現するために、(関数内の)変数の前に global キーワードを使用してください:

<?php
$x=5;
$y=10;
function myTest() {
  global $x,$y;
  $y=$x+$y;
}
myTest();
echo $y; // 出力 15
?>

実行例

PHP は、$GLOBALS[index] という名前の配列にすべてのグローバル変数を同時に保存しています。インデックスには変数名が保存されています。この配列は関数内でもアクセスでき、グローバル変数を直接更新するために使用できます。

上記の例は以下のように書き換えられます:

<?php
$x=5;
$y=10;
function myTest() {
  $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
} 
myTest();
echo $y; // 出力 15
?>

実行例

PHP static キーワード

通常、関数が完了/実行された後、すべての変数が削除されます。しかし、時にはある特定のローカル変数を削除しない必要があります。これを実現するには、さらに多くの作業が必要です。

これを実現するために、変数を最初に宣言したときに使用してください static キーワード:

<?php
function myTest() {
  static $x=0;
  echo $x;
  $x++;
}
myTest();
myTest();
myTest();
?>

実行例

したがって、関数が呼び出されるたびに、この変数に格納されている情報は、関数が最後に呼び出されたときに含まれていた情報です。

注記:この変数はまだ関数のローカル変数です。