Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. PHP入門編 - 変数とは

変数とは

みなさまどうも。いかがお過ごしでしょうか。

さてさて、やってまいりました、初心者の方の学習の壁になることが多い『変数』の解説でございます。最初のうちはちょっと大変かもしれませんが気合を入れて頑張っていきましょう。

まず『変数』の種類についてでございますが、PHPでの『変数』は『ローカル変数』、『グローバル変数』などいくつか種類があったりします。全部を一度に解説すると『スコープ』の概念を理解することが必須になってしまい、少々難しい内容になってしまいますので今回は基本的な『ローカル変数』について解説していきます。

では『変数』とはなんなのか、という話から始めましょう。『変数』とは『データを一時的に保存できる加工や複製が可能な名前がついた領域』って感じです。参考書などでは『箱』と例えられる事が多いですね。箱で例えると『データを一時的に保存できる加工や複製が可能な名前がついた箱』って感じです。名前をつけられて加工したり複製することができる、というのがミソです。

言葉で説明してもなんのこっちゃって話になりますのでちょっと数学を思い出してみましょう。数学で方程式ってありましたよね。『x』とか『y』とか使ったあれです。

x + 1 = y

この概念と非常に近いです。

数学では数値しか入れられなかったりするのですが、プログラム言語の『変数』には数値とか文字列とか真偽値とか様々なものを入れられます。

ではものは試しって事で、軽く『変数』を記述してみましょう。PHPでの『変数』はこんな感じになります。

<?php
$test;

上記の場合だと『$test』が『変数』で、『test』が『変数名』になります。『変数名』とはその名の通り『変数』の名前のことになりますね。ちょっと『変数名』の左側に注目です。『$』が記述してありますね。PHPの『変数』では頭に『$』を付ける必要がありますのでこれは忘れないようにして下さい。

『変数名』は『識別子』(しきべつし)と呼ばれたりすることがあります。

会話などでは『変数名』と呼ばれることがほとんどですが、ちょっと難しめの参考書などでは『識別子』と書いてあったりします。

ただし『識別子』は集合の中から識別できる名前、という意味になるので変数名に限らず関数名や配列名なども全て『識別子』となり、変数名よりも広義なものを指す言葉です。こちらも覚えておきましょう。

さて、変数は無事作成できたのですが変数『$test』を生成しただけですのでこれを実行しても何も起こりません。ただのメモリの無駄遣いになっちゃってます。これだとあんまり意味がないのでちょいと作った変数『$test』に『』を『代入』してみましょう。今回は文字列『Hello world』を入れてみます。

<?php
$test = 'Hello world';

プログラムの世界では『変数』などに何かしらの『値』を入れることを『代入』といいます。

上記のサンプルを確認してみると変数『$test』の右側に『=』が記述してあり、その右側に文字列『Hello world』が記述してありますね。

これで変数『$test』に文字列『Hello world』が『代入』されたってことになるんですが、ちょいと『=』に注目です。数学などの経験から『=』は「左辺と右辺が等しいことを表す記号である」と考えてしまうかもしれません。しかし、プログラムの世界の『=』は『代入』を行うための記号となります。しかも左辺から右辺への代入ではなく、右辺から左辺への代入となりますので要注意です。プログラムでは基本的に右辺から左辺へと処理が進んでいきますのでこちらも覚えておいてください。

さて、これで『変数』に文字列を『代入』することができましたので早速試してみましょう。変数『$test』を『echo』で出力させるとすると以下のような記述になります。

<?php
$test = 'Hello world';
echo $test;

これを実行させるとこうなります。

Hello world

作成した『変数』の中身がちゃんと展開されて出力されていますね。

さらに『変数』の中に数値を入れた場合はそのまま計算とかできちゃいます。以下のソースコードを確認してみてください。

<?php
$test1 = 1;
$test2 = 2;

echo $test1 + $test2;

これを実行させると『3』が出力されます。なんだかプログラムっぽくなってきましたね。

あと注意点として『変数』を『'』とか『"』とかでくくっちゃだめです。そうすると『変数』じゃなくて『文字列』の扱いになっちゃいます。

<?php
$text = 'Hello world';

echo '$text'; // こうすると『変数』扱いにならず、『$text』とそのまま出力されてしまいます。

あとプログラミングでは基本的に上から下へ処理が走るので同じ変数名で代入とかした場合は下に書いてある方が優先されます。こちらも覚えておきましょう。

<?php
$text = 'Hello world';
$text = 'こんにちわ'; // ここで変数『text』は上書きされます。

echo '$text';  // 『こんにちわ』と出力されます。

というわけで『変数』の基本的な使い方はこんな感じになります。

PHP以外の一部の言語では『変数』を作る前に『宣言』とか『型の定義』とかを行う必要があったりしますが、PHPでは『変数宣言』や『』の定義は必要ありません。

以下は『C言語』のサンプルソースです。

#include <stdio.h>
main(){
    char x;
    int y;
    double z;
}

上記のサンプルでは変数『x』、変数『y』、変数『z』を宣言しているのですが、文字列を入れるなら『char』、数値を入れるなら『int』といったように『変数宣言』をしつつ『型』も指定しなくてはならず、慣れるまでちょっと大変だったりします。

変数の宣言と同時に何かの値を代入することを『初期化』といいます。変数宣言を行ったあとに別の文で代入することは初期化と呼びません。

<?php
$txt = 'Hello world'; // こんな感じなのが『初期化』です。

$txt2;
$txt2 = 'miku'; // これは『初期化』ではなくただの代入です。

PHP以外の他の言語では変数宣言の際に変数の型を設定する必要があったり、一部の値が『初期化』じゃないと格納できなかったりとちょっとややこしいので、予期しないバグを予防するために変数を宣言する際には「必ず初期化しておきましょう」という解説があったりします。

この『初期化』という言葉の使い方が参考書や解説サイトによって違っている事が多く、初心者の方がこんがらがってしまうという切ないお話がありますが、要するに最初の値をとりあえず代入しているというだけの話ですので複雑に考えず「初期値を代入しておくのがマナーなんだな (キリッ」という程度の認識でそのまま勉強を進めてしまったほうが無難です。

先ほど解説したとおり、PHPでは型の設定は必要ないので初期化についても特に意識する必要はありません。

さて、ここでちょっと『変数』の使用時についてのネーミングの注意点です。『変数』はなんでもかんでも好きな『変数名』で作成できる、というわけではありません。『変数』や『関数』につけられた名前のことを『識別子』と呼んだりするのですが、PHPでの『識別子』には以下のネーミングルールがあります。

  • 1文字以上の英数字、または『_』(アンダーバー、またはアンダースコア)』を使用する。
  • 先頭の文字は数字以外の文字である必要がある。
  • 大文字小文字は区別される。
  • 予約語』の使用は不可。

それぞれ確認していきましょう。1文字以上の英数字、というのは問題ないかと思います。記号に関しては『_』しか使えないので注意するようにしてください。そして先頭の文字に数字をいれてしまうとダメです。上記のことを踏まえると以下のような感じになりますね。

<?php
$hoge; // これはOKです。
$_hoge; // これはOKです。
$1hoge; // これはダメです。

英数字、と言いましたが実はマルチバイト文字となっていたりするので変数名を日本語にしても動いちゃうのは内緒です。

<?php
$あいうえお = 'かきくけこ'; // 実は日本語も使えます。

echo $あいうえお;

(´-`).。oO(ただし、日本語でのプログラミングはイロモノ扱いなのでご注意を...)

そして大文字小文字が区別される、というところも注意してください。大文字小文字が区別されるかどうかは言語によって違いがありますので非常に間違いやすいところになります。著者もよく間違えてます。

<?php
$text = 'Hello'; // これらの『変数』は全く別のモノとして扱われます。
$tEXt = ' world';

echo $text; // 『Hello world』と出力されます。
echo $tEXt;

最後に『予約語』についてですね。『予約語』とは将来そのプログラミング言語に実装する可能性がある関数名や変数名のことです。全ての『予約語』は前もって変数名などの識別子としての使用は不可にしておかないといけません。

これはどういう事かというと、例えば『hoge』という名前で何かの機能を実装する予定があるとします。ということは前もって『hoge』という名前を使用不可にしておかないと古いPHPファイルを最新のPHPで実行した場合に当時想定していた処理と違う処理が実行されてしまい、古いPHPファイル全般が最新のPHPで上手く動かなくなってしまいます。これが『予約語』を『識別子』として使用できない理由です。

PHPの『予約語』は以下の『公式リファレンス』のページとかを参照してみてください。慣れないうちは『変数』を使用するまえにチラ見しておくと良いかもしれません。

http://php.net/manual/ja/reserved.keywords.php

というわけで長くなってしまったのでこの辺で一旦切ります。次の記事では『変数の使い方』についてやっていきたいと思います。ではではこの辺で。またお会いしましょう。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。