archive

[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の値も変わるようになる。

変数のスコープ

変数のスコープとは、変数が使用できる範囲のこと。

使える範囲によって、変数の種類も異なる。例えば下記のようなものがある。

  • ローカル変数…関数の中で宣言して使用する変数
  • クラス変数…クラスで宣言した変数

ローカル変数

ローカル変数は、関数の中で宣言して使用できる。

`<?php

function example() { $name = ‘谷川岳’; echo $name; }

example();

?>`

`出力結果:
谷川岳`

ここでの例では、関数であるexample(){}の中に、$nameの変数を宣言した。

この$nameはローカル変数なので、関数の外で使おうと思っても、エラーになる。

`<?php

function 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”]