変数について
そふぃのPHP入門 >> PHP言語リファレンス >> PHPの変数 >> 変数について

変数について

変数の定義

  • $(ドル記号)で始める

変数宣言や型の宣言は必要ない

変数とは

変数というのはプログラム中のメモリ領域に付けた名前です。さまざまな値を一時的に記憶しておくために使われます。

よけいに????となりそうなのですが、変数というのはよーは箱だと思ってください。箱の中にいろいろな値をしまっておいて、後から取り出して使います。

商品の値段によって変わる合計金額などの計算結果とか、人によって変わるユーザIDとか・・・そーいった変化する値をしまっておける箱が変数です。

変数はその名の通り、定義しなおせばどんどん値も変わっていきます。状況(スクリプト)に応じて箱(変数)の中身(値)が勝手に入れ替わっていくイメージでいいと思います。

変数の定義方法

変数の定義には代入演算子のイコール「=」を使います。演算子については今は深く考える必要はありません。覚えて欲しいのは、PHPではイコール「=」は代入演算子という名前で変数を定義するのに使われているものだ、という事です。

混乱しやすいのですが、これは数学の世界の「等しい」という意味ではありません。PHPではこのイコール「=」を「左辺に右辺を代入する」という意味で使います。このイコール「=」を「等しい」という意味にとってしまうと変数が理解できなくなると思うので、ここはすっぱりイコール「=」は「等しい」って概念を捨てて下さい。

PHPでは変数を定義する時に変数宣言や型の宣言は必要ありません。型は状況に応じて自動で定義・解釈されます。他の言語でも変数宣言やった事なくて、型とかよー知らんって人にも面倒な前処理が必要ないって事でPHPを楽チン言語にしてる要因でもあります。

参考 PHPの型

変数を定義するにはドル記号「$」で始めます。

変数定義サンプル

  1. <?php
  2. $fruit = "果物"; //変数を定義する
  3. print $fruit; //定義した変数の値を出力
  4. ?>

出力結果

果物

この場合、$fruitという名前の箱の中に「果物」という値をしまっておき、後から(と・・言っても今回はすぐ次の行)箱の中身の「りんご」を取り出して出力してます。取り出す時に箱の名前を指定すれば中身を勝手に取り出してくれる、という訳です。

しつこいようですが、上の式での意味は「$fruitは"果物"である」ではないです。あくまでも「$fruitという名前の変数に"果物"という値を代入する」という意味ですので注意して下さい。

ここでは簡単に値と言いましたが、その値の中には文字列だけじゃなく、数値なんかも入れる事ができます。ちょっと難しい話になりますが、TRUE/FALSEの論理タイプやNULLなどの特殊な値も代入する事ができますが、言ってる事が分からなければ今は深く考えなくていいです。

変数の命名規則

変数を作成する際に決められたルールを紹介します。

まず、変数はドル記号「$」から始め、「$」の後に変数名が続きます。

と、いう事で「$」の後にてきとうに名前を付ければいいのですが、いくらてきとうといっても変数名に使用できる文字ってのがちゃんと決められてます。

変数名に使用できる文字は以下の通りです。

  1. アルファベット・数字・_と0x7F~0xFFまでのコードを持つ文字が使用できる。
  2. 最初の文字が数字であってはいけない。
  3. 大文字・小文字を区別する。

0x7F~0xFF??というのは深く考えずに、日本語の変数名もつけられると覚えておいてもらって構いません。つまり、ひらがな・カタカナ・漢字などです。ただし、アンダーバー「_」以外の記号は使えませんので注意して下さい。

数字は変数名として使用できますが、変数名の先頭が数字であってはいけません。$123$1roundなどという変数はすべて無効となります。$round1なら有効です。変数名の先頭は文字かアンダーバー「_」にして下さい。

  1. $var     //使用可
  2. $var2    //使用可
  3. $3var    //使用不可:数字で始めちゃだめだって( ̄▽ ̄||||)
  4. $_var    //使用可
  5. $_3var   //使用可
  6. $var-var //使用不可:_以外の記号は使えないってば・・
  7. $変数 //使用可

変数名は大文字と小文字を区別するので、「$Variable」・「$variable」・「$VARIABLE」などはすべて違う変数として扱われます。それぞれに別の値を保持しておく事ができますが・・・・・そんなに同じ単語の変数を作ったらまぁこんがらがるでしょうね(笑)