【PHP】変数の基本ガイド: 使い方やデータ型について解説

PHPの変数にはドルマークが使われています。見かけはほかのプログラミング言語に比べると取っつきにくさを覚えるかもしれません。しかし、仕組みは多言語と大差ありません。違和感を感じるのは最初のうちだけですので、少しずつ慣れていきましょう!この記事ではPHPの変数を一から解説していきます。

変数の宣言

PHPでは変数を $ から始めます。文字列や数値、真偽値を代入する例をご紹介します。

$first_name = '佐藤';
$age = 20;
$is_adult = true;

変数には英数字、アンダーバーが使用できます。(※数字で始まる名前は無効です
また、変数名の大文字・小文字は区別されます。

有効な変数名
  • $name2
  • $_name
  • $NAME
無効な変数名
  • $2nd
  • $first-name

変数の使用

変数を使用する際は、代入のとき同様$マークを使います。

$age = 20;
$age = $age + 5;
echo $age;

例の最後に、echoという言語構造を使って$ageを出力しています。echoは値や文字列を出力できるため、様々なケースで使います。今のうちに触っておきましょう。

データ型

PHPでは型宣言は不要で、データを代入したとき自動的に型を判別してくれます。動的型付け言語のため、変数の型が違っても後から代入可能できてしまいます。データ型としてはint, float, string, boolean, arrayなどがあります。

$number = 1;         // int     - 整数
$pi = 3.14;          // float   - 浮動小数点数
$string = 'MOJI';    // string  - 文字列
$flag = true;        // boolean - 真偽値
$array = [1,2,'〜〜']; // array   - 配列

データ型を取得する例

$first_name = 'SATO';
$type = get_debug_type($first_name); // データ型を取得
echo $type;

get_debug_type(PHP 8.0.0~)はデータ型を文字列で取得する関数です。

以下のように出力されます。

string

文字列

PHPには文字列表記の方法が複数あります。

  • シングルクォーテーション (”)
    標準的な表記法
  • ダブルクォーテーション (“”)
    文字列の中で変数を使える
  • ヒアドキュメント
    複数行にわたる文字列を出力できる

ダブルクォーテーションで囲うと、文字列の中で変数を展開できます。変数展開するには{}で変数を囲みます。

$price = 100;
$single = 'シングル:値段は{$price}です';
$double = "ダブル :値段は{$price}です";
echo $single . PHP_EOL;
echo $double . PHP_EOL;

出力するときに結合演算子(ピリオド)を使って、文字列を連結しています。PHP_EOLは使用中のOSで使われる改行文字を表しています(Windows:\n, UNIX系:\r\n)。
出力は次のようになります。

シングル:値段は{$price}です
ダブル :値段は100です

シングルクォーテーションで囲んだ文字列では変数展開されないので、{$price}が文字列としてそのまま出力されています。ダブルクォーテーションで囲うと$priceの中身、100が出力されていますね。

次にヒアドキュメントですが、こちらは複数行の文字列を表現することができます。変数展開も可能です。
記述方法は以下です。分かりづらいですが、任意の識別子で内容を囲っています。

<<< 任意の識別子
内容内容
内容内容
任意の識別子

$line1 = 'line';
$lines = <<< TEXT
line
{$line1}{$line1}
TEXT;
echo $lines;
line
lineline

※ヒアドキュメント最後尾の識別子(例で言うところの5行目のTEXT)の前に、空白やタブなどが入っているとエラーになりますので気を付けましょう。

エラーになる例

$lines = <<< TEXT
    line
    line
    TEXT;
echo $lines;

関数の変数

変数には関数を代入することもできます。

// 文字列と改行をセットにして出力
$echoln = function ($val) {
    echo $val . PHP_EOL;
};

$echoln('First line');
$echoln('Second line');
First line
Second line

変数を関数に入れると、その場限りで使う関数を手軽に定義できます。また、「高階関数」という関数を引数に取る関数を(比較的)分かりやすく定義できます。

// 引数が10の倍数のときTrueを返す関数
$can_div_by_10 = function ($val) {
    return $val % 10 === 0;
}

$numbers = [1,10,50,99];

// array_filter(配列, 関数)
// 配列のそれぞれの要素に関数を適用して、Trueを返す値だけを配列にまとめる
$filtered_numbers = array_filter($numbers, $can_div_by_10);

// echoでは配列を出力できないので、var_dumpを使う
var_dump($filtered_numbers);

出力

array(2) {
  [1]=>
  int(10)
  [2]=>
  int(50)
}

スーパーグローバル変数

スーパーグローバル変数はプログラム中のどこからでも参照できる、前もって定義された変数です。htmlのフォームなどで使うデータを受け渡すGETデータPOSTデータなどが入ります。これらのデータは連想配列です。

変数名はアンダースコアで始まり、大文字が使われています。

スーパーグローバル変数の例
  • $_GET
  • $_POST
  • $_SERVER
  • $_SESSION
  • $_COOKIE

よく使われるグローバル変数

$_GET

主にデータの取得に使われます。URLにURLパラメータを付与すると、$_GETに格納されます。

例:http://example.com?q=123

上記の例では、? 以降の部分がURLパラメータです。q=123 すなわち$_GET[‘q’]に123が格納されます。

$_POST

データの保存、編集、取得などに使われます。URLパラメータは付与されません。

$_SERVER

サーバについての情報が保存されています。ホスト名、、IPアドレスなど。

例:http://example.com?q=123

  • ホスト名($_SERVER[‘SERVER_NAME’]):example.com
  • パラメタ($_SERVER[‘QUERY_STRING’]):q=123
  • IPアドレス($_SERVER[‘SERVER_ADDR’]):127.0.0.1

$_SESSION

一時的にデータを保存したいときに使います。ユーザ情報、複数にページに渡るフォームのデータなど。

$_COOKIE

一定期間データを保存したいときに使います。個人設定、認証トークン、トラッキング情報など。

まとめ

今回はPHPの変数について解説しました。種類が多すぎて戸惑うかもしれませんが、1つずつ覚えていきましょう。プログラムで実際に使っていくことで、自然と身についてくるはずです。

コメント