PHP

[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;


?>
出力結果:
関数内で出力してます:谷川岳グローバル変数をそのまま出力:谷川岳


なぜわざわざ変数のスコープを作るのか?

変数のスコープはなぜ必要なのか?

こちらで別途書いた。

no image
なんでわざわざ変数のスコープなんて作るのか

続きを見る

-PHP
-,