スライドショースライドショー

【PHP入門】これで完璧! 5分でわかる変数の基本徹底解説

変数の基本を5分で すっきり解説!

こんにちは! ライターのmuramatsuです。

今回は変数についての解説です。PHPの勉強を始められた方、変数って完璧に理解できていますか? またある程度勉強されている方は、変数は意外と奥が深いのをご存知ですか?

この記事では、

  • 変数とは?
  • 変数の宣言と値の代入方法
  • 変数を使う方法
  • 変数を初期化する方法
  • 変数のスコープについて


という基本的な内容から、

  • 変わらない値、定数とは?
  • listで簡単に配列の要素を変数に代入する方法
  • スーパーグローバル変数とは?


の応用的な使い方に関しても、図表もいれて分かりやすく解説していきます。

変数とは

PHPは、例えばログイン後ユーザーの登録している名前を表示させたり、その日の特売商品などを表示させることができたりと、Webページを作る上で欠かすことができません。

ただ違う名前や商品を表示させるのに、毎回Webページのコードを書き換えないといけないのはとても大変ですよね。

そこでPHPでは、毎回変わる名前や商品などの「値」を変数とし、変動する値を変数機能を使って簡単に書き換えることができます。変数とはプログラムを実行するために記述されたソースコード上で、扱われるデータを一時的に値を保存しておく箱のようなものです。

変数はコンピュータのメモリという、データやプログラムを一時的に保存してくれる装置に記憶されます。いくつかあるメモリの1スペース(箱)に値が記憶され、その記憶している場所(箱自体)が変数になるイメージです。
変数

変数は基本的に、プログラミング言語で使用する予約後以外なら、好きな名前を付けて使用することができます。PHPの場合は変数を指定するときは、ドル記号($)のあとに変数名を記述します。

変数の名前の付け方例:

$name          …   英語(半角アルファベット)
$name1        …   英語と数字
$nameA       …   英語と大文字アルファベット
$name_a      …   英語とアンダースコア
$_7items      …   アンダースコアと英数字
$äaa              …   äのようなアスキーコードとアルファベット

変数名は大文字と小文字が区別されます。有効な変数名としては、文字またはアンダースコア(_)から始まり、任意の英数字を記述します。

ただ、以下のような場合は変数として認められません。

$1name       …   数字から始める
$name-1      …   特殊な文字を入れる

先頭が数値で始まる変数や特殊文字の入った変数は無効になるので注意しましょう。

変数の名前をつけるのはルールに沿って入ればなんでも構いませんが、変数はいくつも作る事ができるため、その変数がなにを指しているのかが一目でわかるような名前がオススメです。例えば、苗字と名前の変数を作るときは、$last_nameや$firstNameなどのようにすると分かりやすいですよね。

変数の宣言と値の代入方法

PHPでは値を代入する前に事前に変数を宣言する必要がありません。C言語やJavaなどの他のプログラミング言語と大きく異なる点です。

変数に値を代入するときはイコール(=)を使いますが、変数と値は等しい(イコール)と言う意味ではなく、変数に値を格納するという意味になります。

変数を宣言して値を代入するには、使用する変数の名前と変数に格納する値を指定して、以下のように記述します。

基本構文:

$変数名 = 値;

変数に値を代入する場合、値の型(数字や文字列などのタイプ)によって書き方が少し異なってきますので、それぞれの書き方を見て行きましょう。

数値型

123などの数字を変数に代入する方法です。数値型の値を代入するには、基本構文と同じ以下のように記述します。

基本構文:

$変数名 = 数値型の値;

数値型を変数に代入したの実際のサンプルプログラムを見てみましょう。

サンプルプログラム:

<?php

$num = 100;
 
?>

変数$numは英語のnumber(数)を略したnumを変数名にして、数字の100を代入しました。

また以下のように、値が代入された変数に別の値を代入することもできます。

<?php

$num = 100;
$num = 200;

?>

値を代入した変数は、他の数値と演算することもできます。

$num = 100;
$res = $num + 200;

文字・文字列型

PHPでは変数に文字や文字列を代入するにはシングルクォーテーション(' ')またはダブルクォーテーション(" ")で囲んで指定するのが基本です。

文字や文字列は以下のように指定します。

基本構文:

$変数名 = '文字・文字列';

実際のサンプルプログラム

<?php

$str1 = 'Samurai ';

?>

文字列演算子を使用して、文字列同士を結合することもできます。

<?php

$str1 = 'Samurai ';
$str2 = $str1 . 'Engineer'; // Samurai Engineerになります。

?>

文字列を扱う方法については、以下の記事で詳しく解説していますので、ぜひ参考にしてくださいね!

配列

配列とは、変数と違い複数のデータを格納できる箱のようなものです。イメージとしては以下のように複数の箱が連なって、それぞれの箱に値が格納されています。

配列

基本構文:

$配列名(変数名) = [
                  '要素1',
                  '要素2',
                  '要素3',
                  '要素4',
                  '要素5'
                 ];

では実際に配列の宣言と値の設定方法について見ていきましょう。以下は1次元配列に値を格納するサンプルです。

サンプルプログラム:

<?php

$fruits = [
            'apple',
            'orange',
            'melon',
            'banana',
            'paineapple'
          ];

?>

以下は値とキー(箱の番号)で成り立つ連想配列に値を格納するサンプルです。

サンプルプログラム:

<?php

$fruits = [
            0=>'apple',
            1=>'orange',
            2=>'apple',
            3=>'orange',
            4=>'banana'
          ];

?>

サンプルプログラムでは、配列や連想配列の要素は文字列でしたが、数値型でも問題ありません。要素が数字の場合はシングル・ダブルクォーテーションは必要ありません。

配列の詳しい使い方については、以下の記事で詳しく解説していますので、ぜひ参考にしてくださいね!

【PHP入門】配列の使い方総まとめ
更新日 : 2018年9月4日
【初心者必見!】PHPのよく使う配列操作の関数まとめ(array)
更新日 : 2018年9月4日

論理型(boolean)

論理型であるbooleanは、真偽の値を指定します。

真偽の値とは定数のTRUE(真)またはFALSE(偽)を指定します。両方とも大文字、小文字に依存はしません。

//値をTRUEに設定する
$boo = TRUE;

変数の初期化

変数の初期化とはプログラムの初期処理において、あらかじめ変数に決められた値を設定したり、初期値であることを示すために0やNULLを指定することを言います。PHPでは変数の宣言と値の代入はセットで行いますので、一番始めに変数の宣言と値を代入する処理が初期化処理となります。

PHPでは初期化されていない変数はNULLが格納されているとみなされます。これは以下のように記述した場合と同じです。

$変数 = NULL;

このように$変数にNULLを代入することによって、その変数には値が何も代入されていないと同じ意味となります。

しかしNULLは値が何も入っていないため、NULL設定の変数を参照したり演算で使用するとエラーとなることもありえますので、変数は必ず初めの段階で値を設定しておくことが基本となります。

配列のさまざまな初期化方法については以下の記事で詳しく解説していますので、ぜひ参考にしてくださいね!

変数を使う

さて変数に値を代入した次は、その値を使っていきましょう。

変数の値を出力させる

もっとも簡単で基本的な処理で、変数に代入された値をechoprintを使って出力します。また配列を出力させるときはprint_rを使って出力させます。

さっそく変数に値を代入して、出力させてみます。

<?php

//数値型
$num = 100;

echo $num;

//改行
echo '<br>';

//文字列
$str1 = 'Samurai ';
$str2 = $str1 . 'Engineer'; 

echo $str1;

echo '<br>';

//配列
$fruits = [
           'apple',
           'orange',
           'melon',
           'banana',
           'paineapple'
          ];


print_r($fruits);

echo '<br>';


$fruits2 = [
           0=>'apple',
           1=>'orange',
           2=>'apple',
           3=>'orange',
           4=>'banana'
          ];


print_r($fruits2);


?>

実行結果:

100
Samurai 
Array ( [0] => apple [1] => orange [2] => melon [3] => banana [4] => pineapple ) 
Array ( [0] => apple [1] => orange [2] => apple [3] => orange [4] => banana )

実行結果を見ると、変数に代入した数値や文字列、配列の通りに出力がされていますね。

もし変数を宣言せずにechoなどで出力する場合など、宣言していない変数を参照しようとすると、以下のようにエラーが発生するので注意しましょう。

Notice: Undefined variable: name in /Applications/XAMPP/xamppfiles/htdocs/testcode7.php on line 3

ここで出てきたechoやprintについて詳しく知りたい方は、下記記事も参考にしてみて下さいね。

値を変更する

変数に代入した値は変更することが可能です。値を変更するには、変更したい変数に違う値を代入するだけでできます。

実際に見てみましょう。

<?php

$last_name = '佐藤';

echo $last_name;
echo '<br>';

$last_name = '吉田';

echo $last_name;

?>

実行結果:

佐藤
吉田

同じ変数に違う値を代入すると、変数が違う値に変更されているのが分かりますね。もし値を変更したくない場合は、違う変数名を用意しましょう。

文字列と一緒に変数を出力

文字列と変数を一緒に出力するには、出力したい文字列と変数をダブルクォーテーション(“ “)で囲みます。その場合、文字列と変数の間に半角スペースを入れるか、変数を波カッコ({ })で囲みます。

ダブルクォーテーションは変数を展開してくれるので、変数の中に入っている値を出力してくれます。一方シングルクォーテーションで囲んでしまうと、変数は展開されず、そのまま出力されてしまいます。

シングルクォーテーションを使う場合は文字列のみを囲み、変数はそのままで、文字列と変数との間にドット(.)を入れて繋げるこも可能です。

さっそくサンプルプログラムでそれぞれの方法で文字列と変数を一緒に出力してみましょう。

<?php

$last_name = '佐藤';
//ダブルクォーテーションで囲った場合
echo "私は $last_name です。<br>";
//ダブルクォーテーションで囲み変数を{ }で囲った場合
echo "私は{$last_name}です。<br>";


$last_name = '吉田';
//シングルクォーテーションで囲った場合
echo '私は$last_nameです。<br>';

$last_name = '田中';
//ドットで繋げた場合
echo '私は'. $last_name. 'です。<br>';

?>

実行結果:

私は 佐藤 です。
私は佐藤です。
私は$last_nameです。
私は田中です。

ダブルクォーテーションで囲った場合は、変数$last_nameに代入されている佐藤が展開されて出力されています。ただ文字列と変数の間に半角スペースを入れないといけないので、実行結果も佐藤の前後に半角スペースが入ってしまっています。

変数を波カッコで囲った場合の実行結果には佐藤の間にスペースは入っていません。シングルクォーテーションで囲った場合は、そのままの変$last_nameが出力されてしまっています。

一方シングルクォーテーションで文字列のみを囲み、ドットで変数と繋げると、うまく実行されているのが分かりますね。

変数のスコープ

変数のスコープとは、変数が使用できる範囲のことを言います。

変数は使える範囲が決まっており、関数の波括弧({ })で囲まれた中で宣言して使用する変数のことをローカル変数、クラスなどで宣言した変数をグローバル変数と言います。またそれぞれの変数がローカルスコープ、グローバルスコープと呼ばれます。

ローカルスコープのサンプル:

<?php

function samplefunc() {
  $name = 'samurai engineer';
  echo $name;
}
 
samplefunc();

?>

実行結果:

samurai engineer

プログラムの中で呼ばれた関数samplefunc()の中ではローカル変数$nameが宣言されて値が格納されています。この$nameは関数samplefunc()の中で作られていますので、関数外であるグローバルスコープでは使用することはできません。

たとえば関数呼出し箇所であるsamplefunc()の下に「echo $name;」を記述しても値はNULLとなっています。そのため、グローバルスコープでも変数を参照するためには、グローバルスコープで設定した変数をglobalを指定して参照する必要があります。

グローバルスコープのサンプル:

<?php

$name = 'samurai engineer';
 
function samplefunc(){
 
  //globalを指定して、グローバルスコープの変数を参照する
  global $name;
  echo 'ローカルスコープでの参照:'.$name;
  echo '<br>';
}
 
samplefunc();
 
echo 'グローバルスコープでの参照:'.$name;

?>

実行結果:

ローカルスコープでの参照:samurai engineer
グローバルスコープでの参照:samurai engineer

ローカル、グローバルそれぞれのスコープで変数が参照できることがわかりますね。

ローカルスコープの範囲とグローバルスコープの範囲は以下のようになっています。

グローバルスコープ
<?php

$name = 'samurai engineer';

ローカルスコープ
function samplefunc(){

//globalを指定して、グローバルスコープの変数を参照する
global $name;
echo 'ローカルスコープでの参照:'.$name;
echo '<br>';
}

グローバルスコープ
samplefunc();

echo 'グローバルスコープでの参照:'.$name;

?>

関数functionの中がローカルスコープの範囲で、その外がグローバルスコープの範囲となります。

かわらない値、定数とは

定数とは一度設定したら、あとから値が変更ができない変数のことを言います。PHPで定数を指定するにはconstを使用する方法とdefineを指定する方法があります。

定数は主に値を変更されたくないときや、あらかじめ値が決まっている既定値やファイルやURLなどを指定するときに使われます。

以下にconstで定数を定義するサンプルを紹介します。constはクラス内で定義する必要があります。

サンプルプログラム:

<?php

class ConstClass
{
  //定数を定義する
  const CONSTSTR = 'samurai engineer';
 
  function showConst(){
    echo self::CONSTSTR;
  }
}
 
$Class = new ConstClass();
$Class->showConst();

?>

実行結果:

samurai engineer

一度constで設定した定数は、あとから値を変更しようとしてもエラーとなります。

そんな定数の詳しい使い方については、以下の記事で詳しく解説していますので、ぜひ参考にしてくださいね!

【PHP入門】constで定数を定義する方法
更新日 : 2019年6月11日
【PHP入門】defineで定数を定義する方法
更新日 : 2019年2月12日

listで配列の要素を変数に代入する方法

list関数を使うと、配列の各要素の値を変数として順番に格納することができます。list関数は引数に代入したい変数1つまたは複数指定します。

指定した引数は配列の要素番号0から順番に格納されるので、list関数で指定する変数と配列の要素数は一致する必要があります。

サンプルプログラム:

<?php

$fruits_array = [
                 'apple',
                 'orange',
                 'melon'
                ];

//listの複数変数を配列から代入
list($apple, $orange, $melon) = $fruits_array;

echo $apple. ','. $orange. ','. $melon;

?>

実行結果:

apple,orange,melon

配列の要素が変数として格納され、それぞれの変数を出力すると、配列の要素が出てきました。このようにlist関数を使うと、配列から複数の変数になり一気に値を取得することができます。

list関数については、以下の記事でも詳しく解説しています!

【PHP入門】list関数の基本から応用までわかりやすく解説!
更新日 : 2019年5月17日

スーパーグローバル変数とは

これまでの変数は自分で定義するものでしたが、PHP実行時に自動的に定義され、すべてのスコープで使用することのできるスーパーグローバル変数があります。スーパーグローバル変数には「$_GET」「$_POST」「$_SESSION」など様々なものがあります。

スーパーグローバル変数の$_GETや$_POSTは、以下の記事で詳しく解説していますので、ぜひ参考にしてくださいね!

【PHP入門】POST送信、GET送信する方法
更新日 : 2019年8月7日

PHPを継続的に学習するコツ

PHPの学習をしていて、わからないところが多く何回も調べながらやるのは正直、嫌になってしまいますよね。そこで、どのようにすれば継続的に学習を続けて行けるのかそのコツをご紹介します。

目的を明確にする

まずは、なぜPHPを学んでいるのか明確にしましょう。例えば、PHPを学んで

  • Webサイトが作りたい
  • WordPressの編集がしたい
  • エンジニアとして転職したい
  • フリーランスを目指したい


など、目的は色々あると思います。

この目的を明確にすることがとても大事で、PHPを学ぶ学習意欲に繋がっていきます。目的がないまま学習をしていると、学習すること自体が目的になってしまい、ゴールのない果てしない道を進むことになります。その結果、挫折してしまう人が多いのが現状となっています。

そうならないためにも、PHPを学ぶ目的は言えるようにしましょう。もし言えない場合は、学ぶプログラミング言語自体間違っている可能性もあります。なので、しっかり目的から学んでいる言語があっているか確認しましょう。

学習プランを決める

目的が明確になったら、次に学習プランを立てましょう。この学習プランを立てずに学習している人が多いのですが、学習プランがないと自分が今どのくらい進んでいて、後どのくらい学習をすればいいのか見えないので、学習をすること自体がきつく長続きしません。

学習を継続的に続けるためには学習プランは必須とも言えます。いつまでに、どのレベルになっていて、最終的なゴールはいつ達成するのかはしっかり決めましょう。

先生を見つける

「何度もエラーになって、自分で調べては修正する」この繰り返しがPHPを学習していると起こります。調べてもよくわからないし、時間もかかってしまってプラン通りに学習が進まないというのは当然のように起こります。

調べて直したけどうまく動かないしどうなってんの

このように思い、学習をすること自体に嫌気が指して挫折してしまう人も多いです。

そうならないためにも、「先生」を見つけることが大事になります。先生と言ってもそう簡単に探せそうにないですよね。最近ではSNSでもコミュニティーが増え、相談しやすい環境が増えてきています。こういったコミュニティーや勉強会を利用して先生を見つけるのも一つの手です。

自分に投資することも大事

学習サイトやアプリなど、無料で学習できる環境が整ってはいるものの自分に投資して学習をすることも大事です。本や有料学習サイトは、無料では学べない範囲の学習や機能が付いているので、効率的に学習をすることが可能です。

そして、投資のもう一つの方法がプログラミングスクールで学ぶことです。

独学と違い、プログラミングスクールでは上で紹介した学習を継続するためのサポートが徹底されているので、最も効率の良い学び方と言えるでしょう。先生も自分で探す必要がないので、エラーなどで躓いて時間がかかる心配もありません。

ですが、当然いきなりスクールに入るのは抵抗がありますよね。

その場合は、弊社で行っている無料体験レッスンへ参加してみてください。この無料体験レッスンでは、なぜPHPを学ぶのかその目的をヒアリングして、本当にPHPを学ぶべきなのか、その学習プランはどのように立てるのかなどの提案をしています。

目的をヒアリングすることで、あなたに最適な言語や学習プランが分かるので、最速でエンジニアを目指せるイメージがわきます。

手軽にしかもオンラインでも受けられるので、ぜひ一度目的を明確にしてみましょう。

無料体験レッスンに申し込む

まとめ

ここではPHPでの変数について、

  • 変数とは?
  • 変数の宣言と値の代入方法
  • 変数を初期化する方法
  • 変数が存在するかチェックする方法
  • 変数のスコープについて
  • listで複数の変数を代入する方法
  • 定数とは?
  • スーパーグローバル変数とは?


などについて解説しました。変数はプログラミングをする上でもっとも重要な構文となりますので使い方はよく覚えておきましょう!

もし変数の使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

muramatsu

muramatsu

世界中の人たちと友達になって、その友達の家を巡る旅をしたいと密かに思っている。

複雑な内容を誰にでもわかりやすく、そして納得のいくような解説をする、をモットーにしています!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説