PHP入門 変数
スクリプトの途中結果などのデータを入れておく、変数(データの入れ物)について解説
変数の宣言
PHPでも、変数の利用にあたって宣言が必要です。コード上で変数に初めて値を格納したタイミングで、変数のための領域が自動的にメモリ上に確保されます。
<?php
$msg = 'はじめまして、みなさん';
print $msg; //結果:はじめまして、みなさん
print $msg;のように参照できるのは、あらかじめ用意された変数のみです。指定された変数がない場合は、「Undefined variable $msg」のようなWarningが発生します。
変数の命名規則
PHPの命名規則は比較的自由ですが、次の命名規則があります。
No. | 規則 | 良い例 | 悪い例 |
---|---|---|---|
❶ | 「$名前」の形式であること | $name、$msg | str、msg |
❷ | 名前の先頭は、任意の文字かアンダースコア(_)であること | $data、$_name | $123、$1data |
❸ | 名前の2文字目以降は、❷に加えて数値を利用してもよい | $name_11、$_test10 | $name-11 |
❹ | 大文字/小文字は区別される | $val、$Val | – |
❺ | 予約語を使用しない | $name、$msg | $if、$for |
❷、❸のルールに従えば、日本語を含むほとんどの文字を変数名として利用できます。ただし、慣例的に、変数名は「英数字、アンダースコア(_)」に限定します。
名前の記法ルール
記法 | 概要 | 例 |
---|---|---|
camelCase記法 | 先頭文字は小文字、その後、単語の区切りを大文字で表記 | $userName |
Pascal記法 | 先頭文字も含めて、すべての単語の頭文字を大文字で表記 | $UserName |
アンダースコア記法 | すべての文字は小文字/大文字で表し、単語の区切りはアンダースコア(_)で表記(スネークケース) | $user_name |
PHPでは、変数/関数はcamelCase記法、定数は大文字のアンダースコア記法、クラスはPascal記法で表すが一般的です。
予約語
予約語とは、PHPであらかじめ意味が決められた単語(キーワード)のことです。予約語は、定数、関数/クラスの名前ではそもそも禁止です。変数だけでは使用できますが、基本使用しない方がよいでしょう。
主な予約語
__halt_compiler | abstract | and | array | as | *bool | break |
callable | case | catch | class | clone | const | continue |
declare | default | die | do | echo | else | elseif |
empty | enddeclare | endfor | endforeach | endif | endswitch | endwhile |
eval | exit | extends | false | final | finally | *float |
fn | for | foreach | function | global | goto | if |
implements | include | include_once | instanceof | insteadof | *int | interface |
isset | iterable | list | **mixed | namespace | new | **numeric |
null | *object | or | private | protected | public | |
require | require_once | **resource | return | static | *string | switch |
throw | trait | true | try | unset | use | var |
void | while | xor | yield | yield from |
可変変数
可変変数とは、「変数名を変数の値によって決める」ことができる変数のことを言います。先頭に、「$」を2つ重ねることによって、変数名を別の変数の値で動的に決定します。
<?php
$x = 'title';
$title = 'PHP:Hypertext Preprocessor';
print $$x; //結果:PHP:Hypertext Preprocessor
変数$xに「title」という値がセットされているので、可変変数$$xは、$xの内容が評価された結果、$titleと同じになります。このように、可変変数を利用することで、ある変数の値に応じて動的に変数名を付け替えれらえるようになります。