[PHP] PHPの変数とは。変数の宣言について説明
PHPの変数とは何かについて説明する。また変数の宣言・定義や使い方についても説明する。
文字列・数値・配列の扱い方、参照渡し、変数のスコープ(ローカル変数・グローバル変数)について触れる。
変数とは?
データを一時的に保管しておく箱のようなもの。
PHPの変数の定義と出力
PHPで変数を定義するには、ドル記号の「$」で定義する。
`$color = "blue"; //変数を定義する`
定義した変数を出力したい場合は、echoやprintを使って出力する。
`<?php $color = "blue"; //変数を定義する print $color; //定義した変数の値を出力 ?>`
`出力結果: blue`
変数と文字列
変数には文字列を入れることができる。
`<?php $color = "blue"; //文字列を値に入れて定義 print $color; //定義した変数の値を出力 ?>`
`出力結果: blue`
変数と文字列を組み合わせて出力
文字列演算子「. 」を使うことによって、文字列と変数を連結できる。
`<?php $color = "青"; // 文字列と変数を繋げる echo "色は" . $color . "が好きです。"; ?>`
`出力結果: 色は青が好きです。`
""(ダブルクオテーション)と”(シングルクオテーション)での違い
文字列と変数を一緒に出力する場合、""(ダブルクオテーション)と”(シングルクオテーション)で出力が異なる。
`<?php $color = "青"; // 変数を""の中へ。半角スペースを入れないとエラー echo "色は $color が好きです。"; ?><?php $color = “青”; // 文字列と変数を.で繋げる echo “色は” . $color . “が好きです。”; ?>
<?php $color = “青”; // 変数を{}で囲む echo “色は{$color}が好きです。”; ?> `
`出力結果: 色は 青 が好きです。 色は青が好きです。 色は青が好きです。`
これを同じ形でシングルクオテーションで行ってみる。
`<?php $color = "青"; // 変数を""の中へ。半角スペースを入れなくてもOK echo '色は $color が好きです。'; ?><?php $color = “青”; // 文字列と変数を.で繋げる echo ‘色は’ . $color . ‘が好きです。’; ?>
<?php $color = “青”; // 変数を{}で囲む echo ‘色は{$color}が好きです。’; ?>`
`出力結果:
色は $color が好きです。
色は青が好きです。
色は{$color}が好きです。`シングルクオテーションで囲む方法は、変数名がそのまま出てくるパターンもあるので注意。
変数と数値
計算結果を定義することもできる。
`<?php $cul = 5+5; print $cul; ?>`
`出力結果: 10`
また、数値を入れた変数同士で計算した結果を変数化することもできる。
`<?php $num1 = 5; $num2 = 10; $cul = $num1 + $num2; print $cul; ?>`
`出力結果: 15`
変数と配列
配列は複数のデータを格納することができる。
定義した変数を出力したい場合は、echoやprintだったが、配列を出力したい場合は、print_r($変数);であることに注意。
`<?php$color = [ ‘blue’, ‘yellow’, ‘red’ ];
print_r($color); ?>`
`出力結果:
Array
(
[0] => blue
[1] => yellow
[2] => red
)
`変数の名前を決めるときのルール
変数を作成する際には、いくつかのルールがある。
- 大文字と小文字は区別される
- 最初の文字は数字にしてはいけない
- 半角英数字と_以外の記号は使えない
`//使える $example //使える $Example //数字が最初だと使えない $1example //_以外の記号は使えない $example-variable `
変数のエラー
変数を使うには最初に変数の宣言が必要だが、変数の宣言がされていないとエラーになる。
例えば最初の例で変数$colorを宣言せずいきなり使おうとすると以下のようなエラーが出る。
`<?php print $color; //いきなり宣言してない変数を使うとエラー ?>`
`出力結果: PHP Warning: Undefined variable $color in /workspace/Main.php on line 2`
変数の再定義
変数は再定義し直すことができる。
以下は$colorの変数の値を書き直した形。
`<?php $color = "blue"; //変数を定義する $color = "yellow"; //変数を再定義する print $color; //定義した変数の値を出力 ?>`
`出力結果: yellow`
変数の参照渡し
参照渡しによって、別の名前の変数の中身を参照することができる。
まずは普通に別の変数の中身を参照するとどうなるか。
`<?php $num1 = 5; $num2 = $num1; // $num2に$num1の値を代入 $num1 = 50; // $num1の値を変更echo $num2; // $num1の値が入っている$num2を出力 ?>`
`出力結果: 5`
この状態だとPHPが$num1と$num2を違う変数として扱っているので、num1の数字を変えても、num2には特に影響がない。
では参照渡しを使うと?
`<?php $num1 = 5; $num2 = &$num1; // $num2に$num1の値を参照渡しで代入 $num1 = 50; // $num1の値を変更echo $num2; // $num1の値が入っている$num2を出力 ?>`
`出力結果: 50`
参照渡しを使うと、PHP内部で$num1と$num2を「違う名前を持つ同じ変数」として扱うようになる。
つまり、参照渡しを使うと$num1の値を変えたら$num2の値も変わるようになる。
変数のスコープ
変数のスコープとは、変数が使用できる範囲のこと。
使える範囲によって、変数の種類も異なる。例えば下記のようなものがある。
- ローカル変数…関数の中で宣言して使用する変数
- クラス変数…クラスで宣言した変数
ローカル変数
ローカル変数は、関数の中で宣言して使用できる。
`<?phpfunction example() { $name = ‘谷川岳’; echo $name; }
example();
?>`
`出力結果: 谷川岳`
ここでの例では、関数であるexample(){}の中に、$nameの変数を宣言した。
この$nameはローカル変数なので、関数の外で使おうと思っても、エラーになる。
`<?phpfunction example() { $name = ‘谷川岳’; }
echo $name;
?>`
`出力結果: PHP Warning: Undefined variable $name in /workspace/Main.php on line 7`
グローバル変数
関数外で変数を宣言した場合、「global」をつけることで、関数内で使用できる。
`<?php$name = ‘谷川岳’;
function example(){ global $name; echo ‘関数内で出力してます:’.$name; }
example();
?>`
`出力結果: 関数内で出力してます:谷川岳`
もちろんこれまでの例と同じ通り、グローバル変数はそのまま出力してもOK。
`<?php$name = ‘谷川岳’;
function example(){ global $name; echo ‘関数内で出力してます:’.$name; }
example(); echo ‘グローバル変数をそのまま出力:’.$name;
?>`
`出力結果: 関数内で出力してます:谷川岳グローバル変数をそのまま出力:谷川岳`
なぜわざわざ変数のスコープを作るのか?
変数のスコープはなぜ必要なのか?
こちらで別途書いた。
[st-card myclass="" id=1745 label="" pc_height="" name="" bgcolor="" color="" fontawesome="" readmore=“on”]