未経験からエンジニア転職をするための最強ロードマップロードマップ

【PHP教材②】変数の使い方からデータ型、各種演算子の使い方までを徹底解説

ファド

こんにちは!
PHPのLaravelやJavaScriptでWeb開発をしているフリラーンスエンジニアのファドと申します!

こちらの記事はPHP教材の第2回目の記事になります。

その他のPHP教材を学習したい方は下記リンクから直接教材へ飛ぶことができます。

目次

変数

フォルダ名:「variable」
今回のレクチャーでは、JavaScriptでも学習しましたが、プログラミングの基本となる「変数」について改めて教えていきたいと思います。
プログラミング言語には、あるひと塊に名前をつけることができる「変数」という機能があります。

なぜこのような機能があるかと言うと、プログラミングをしていると、同じようなテキストやデータなどを何度も使い回したい場合が多々あります。
何度も使い回す場合、その都度同じテキストやデータを書き込むのは面倒ですよね。
そんなときに役立つのがこの「変数」なのです。

変数とは、さまざまなものを入れておく「箱」だとイメージするとわかりやすいです。

さて、変数がどのようなものかわかったところで、実際にPHPで変数を使う方法を説明していきます。

PHPでの変数の使い方を説明していくので、フォルダとファイルを準備しましょう!
MAMP(XAMPP)のhtdocsフォルダ内に’variable’という名前のフォルダを作成し、その中にindex.phpというファイルを作成してください。
index.phpを下記の通り編集してください。

早速コードを書いてみてみましょう!

<?php 
$text = "PHPで変数を確認";
echo $text;

下記のURLより、ブラウザにアクセスし表示を確認してください。
PHPで変数を確認というテキストが出力されていればOKです!
http://localhost:8888/variable
http://localhost/variable

再代入

PHPの変数もJavascriptの変数と同様に再代入ができます!
以下のコードを見てください。

<?php
$text = "PHPで変数を確認";
$text = "変数を上書きしました";

// 変数を上書きしましたというテキストがブラウザに出力される
echo $text;

以上のコードのように、PHPの変数の値を再代入することができます。
つまり、再代入することで変数textの内容を書き換えることができます。
再代入した後のコードでは、新たに変数が代入されるまでは、上書きした値が変数に格納されていることになります。

変数は何回でも使える

変数は、1度定義してしまえば、何回でも再利用することができます。

<?php
$word = "再利用";
echo $word;
echo $word;
echo $word;
echo $word;
echo $word;

こうすることで、再利用というテキストを5回出力することができます。
この「再利用できること」が、変数を使う大きなメリットの1つです。
覚えておきましょう!

変数名の命名規則

変数の名前は皆さん自身で決めていただいて構いません。
つまり、textでも、boxでも、testでもいいということです。

変数の名前は任意です。ただし以下の点に注意しましょう。
・名前には半角英数字とアンダースコア「_」のみ使用するようにしてください。
・先頭に数字を使うのは避けてください。
・先頭に大文字を使うのは避けてください。
・予約語を使わないでください。

補足ですが、PHPでは行末に;(セミコロン)を必ず入れてください。
JavaScriptの場合は付けなくても実質問題ありませんでしたが、PHPの場合は、セミコロンを省略するとプログラムが機能しなくなります。

★検索ワード
・PHP 変数
・PHP 予約語とは

データ型について

フォルダ名:「data_type」

JavaScriptにもデータ型はありましたが、もちろんPHPにもデータ型が存在します。

PHPにも、文字列、数値、真偽値といった値の型があります。
これらの値の型のことをデータ型と呼びます。

データ型を大きく分けると、スカラー型と複合型、特殊型の3つに分類されます。
・スカラー型は、一つの変数に一つの値だけを扱うことができる型のことです。
・複合型は、一つの変数に複数の値をまとめて扱えるデータ型のことです。
・特殊型は、スカラー型でも複合型でもないデータ型のことです。

PHPのデータ型を細かく見ていくと、4つのスカラー型と2つの複合型、2つの特殊型から成り立っています。

スカラー型

型名説明
真偽値(Boolean)trueまたはfalse
整数(Int)-101などの整数
浮動小数点(Float)3.14のような小数点数
文字列(String)“テキスト”などの文字列

複合型

型名説明
配列(Array)複数のデータの集合
オブジェクト(Object)データと手続きの集合

特殊型

型名説明
リソース(Resource)外部リソースへの参照
Null値が存在しないことを意味する

また、以前ご紹介したvar_dump()を使うことで、データ型を簡単に調べることができます。

<?php
var_dump(true);
// bool(true) 

var_dump(124);
// int(124)

var_dump(3.14);
// float(3.14)

var_dump("テキスト");
// string(12) "テキスト"

var_dump(['a', 'b']);
// array(2) { [0]=> string(1) "a" [1]=> int(1) }

var_dump(null);
// NULL

var_dump()の後のコメントアウトは、全て実行結果です。
配列を確認した場合には、配列に入っているすべてのデータの型が出力されます。
オブジェクト(Object)とリソース(Resource)については後ほど詳しく説明していきます!

リテラル

リテラルとは、プログラム上で数値や文字列など、データ型の値を直接記述できるように、構文として定義されたものです。
例えば、"(ダブルクォーテーション)と"で囲んだ範囲が文字列リテラルで、これは文字列型のデータを表現していることになります。

コードで説明すると、下記のようになります。

<?php
// ダブルクォーテーションで囲んだ範囲が文字列リテラルになる
$str = "文字列リテラル";

下記の4つのスカラー型は、それぞれリテラル表現を持っています。
・真偽値
・整数
・浮動小数点
・文字列

また、2つの複合型も、それぞれリテラル表現が用意されています。
・オブジェクト
・配列

そして、1つの特殊型もリテラル表現が用意されています。
・null

これらのリテラルについて、まずはスカラー型から順番に見ていきます。

真偽値(Boolean)

真偽値にはtruefalseの2つのリテラルがあります。
それぞれはtrueとfalseの値を返すリテラルで、正か偽かの見た目通りの意味となります。

<?php
var_dump(true);
// bool(true)

var_dump(false);
// bool(false)

var_dump()の後のコメントアウトは、全て実行結果です。

整数(Int)

数値は5431のような整数リテラルがあります。

<?php
var_dump(1);
// int(1)

var_dump(132);
// int(132)

var_dump(4532);
// int(4532)

var_dump()の後のコメントアウトは、全て実行結果です。

浮動小数点(Float)

数値には先程ご説明した整数リテラルと、4.54326のような浮動小数点数リテラルがあります。

<?php
var_dump(3.14);
// float(3.14)

var_dump(1.5342);
// float(1.5342)

var_dump(5.43522); 
// float(5.43522)

var_dump()の後のコメントアウトは、全て実行結果です。

文字列(String)

文字列リテラル共通のルールとして、同じ記号(ダブルクォーテーションやシングルクォーテーションなど)で囲んだ内容を文字列として扱います。
文字列リテラルとして次の3種類のリテラルがありますが、その評価結果はすべて同じ”リテラル”になります。

<?php
var_dump("リテラル");
// string(12) "リテラル"

var_dump('リテラル');
// string(12) "リテラル" 

var_dump()の後のコメントアウトは、全て実行結果です。

null

nullリテラルはnull値を返すリテラルです。
nullは「値がない」ということを表現する値です。

<?php
$hoge = null;
var_dump($hoge);
// NULL

var_dump()の後のコメントアウトは、全て実行結果です。

配列

頻繁に使われるリテラルとして配列リテラルがあります。
配列リテラルは[]で値をカンマ区切りで囲み、その値を持つArrayオブジェクトを作成します。
配列(Arrayオブジェクト)とは、複数の値に順序をつけて格納できるオブジェクトの一種です。

<?php
// 空の配列を作成
$emptyArray = [];
var_dump($emptyArray);
// array(0) { }

// 値を持った配列を作成
$array = [1, 2, 3];
var_dump($array[0]);
// int(1)
var_dump($array[2]);
// int(3)

$arrayString = ['1番目', '2番目', '3番目'];
var_dump($arrayString[0]);
// string(7) "1番目"
var_dump($arrayString[2]);
// string(7) "3番目"

var_dump()の後のコメントアウトは、全て実行結果です。

少しややこしいですが、配列は0からはじまるインデックスに、対応した値を保持しています。
上記の配列arrayを例にすると、インデックスが0の場合は数値の1インデックスが1の場合は数値の2インデックスが2の場合は数値の3になるので、var_dump(array[0])と記述された場合は、数値の1が出力される。

このように、作成した配列の要素を取得するには、配列に対してarray[インデックス番号]という構文で指定したインデックスの値を参照できます。
また、var_dump($emptyArray);の実行結果に注目してください。
array(0) { }と出力されていますね。

このarray()の部分で配列の中に要素がいくつ入っているかということが読み取れます。
$emptyArrayは空の配列なのでarray(0)となっているということです。
$arrayを同じようにvar_dump()で出力してみましょう。

<?php
// 値を持った配列を作成
$array = [1, 2, 3];
var_dump($array);
// array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) 

var_dump()の後のコメントアウトは、全て実行結果です。

コメントアウトに注目するとarray(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
array(3)になっていますね。
配列$arrayの中には3つの要素が入っているということがここで読み取れます。

連想配列

配列の学習が終わったところで、ここで連想配列も一緒に学習していきましょう!
配列とは、一つの変数に複数のデータを入れておくものでした。

連想配列とは、配列を使いやすくしたものです。

配列は、先頭から順に番号を振ることで中身のデータを区別していましたが、連想配列では番号でなく名前をつけて区別することができます。

具体的に違いを説明すると、配列には、変数の箱の中身に 0,1,2……と背番号のように番号を振り、その番号を指定することでデータを指定するという性質がありましたが、連想配列では、番号のかわりに名前をつけて管理することができます。

<?php
$array = ["名字" => "山田", "名前" => "太郎", "年齢" => 26];

var_dump($array);
// array(3) { ["名字"]=> string(6) "山田" ["名前"]=> string(6) "太郎" ["年齢"]=> int(26) }

var_dump()の後のコメントアウトは、実行結果です。

上のコードの名字名前のことをキー(key)山田太郎のことを値(value)といいます。

連想配列から特定の値(value)を取得する場合にはキー(key)を指定してあげます。
実際にコードで確認してみましょう!

<?php
$array = ["名字" => "山田", "名前" => "太郎", "年齢" => 26];

var_dump($array["名字"]);
//string(6) "山田"

var_dump()の後のコメントアウトは、実行結果です。
山田が出力されましたね!

名字の部分を名前年齢に変えて試してみてください。太郎26がそれぞれ出力されることが確認できると思います。

演算子について

フォルダ名:「operator」
PHPにも、算術演算子や代入演算子、論理演算子などがあります。
それらをどのように使うのかなどを含めて、説明していきます。

算術演算子

種類説明
+加算演算子:a + b 「aにbを足す」
減算演算子:a – b 「aからbを引く」
*乗算演算子:a * b 「aとbをかける」
/除算演算子:a / b 「aをbで割る」
%剰余算演算子:a % b 「aをBで割った余り」
**べき乗演算子:a ** b 「aのb乗」

手を動かしながら見ていきましょう。
index.phpを下記の通り編集してください。

<?php
$plus = 12 + 32;
var_dump($plus);
//int(44)

$minus = 29 - 12;
var_dump($minus);
// int(17)

$time = 10 * 2;
var_dump($time);
// int(20)

$divide = 100 / 20;
var_dump($divide);
// int(5)

$extra = 33 % 5;
var_dump($extra);
// int(3)

$exponent = 5 ** 5;
var_dump($exponent);
// int(3125)

var_dump()の後のコメントアウトは、全て実行結果です。

5 ** 5は、5✕5✕5✕5✕5の計算をしています。
べき乗は忘れがちなので、ぜひ覚えておきましょう!

もちろん数字の部分を変数にすることもできます。

<?php
$num = 5;
$ten = 10;

$result = $num * $ten;
var_dump($result); 
// int(50)

変数numは5、変数tenは10なので、num * ten5 ✕ 10という意味になります。
よって、出力結果はint(50)になります。

代入演算子

種類説明
=a = b 「aにbを代入する」
+=a += b 「aにbを足して、aに代入する」
-=a -= b 「aからbを引いて、aに代入する」
*=a *= b 「aにbを掛けて、aに代入する」
/=a /= b 「aをbで割って、aに代入する」
%=a %= b 「aをbで割った余りを、aに代入する」
**=a **= b 「aのb乗をaに代入する」

手を動かしながら見ていきましょう。
index.phpを下記の通り編集してください。

<?php
$baseNum = 100;

$variable = $baseNum;
var_dump($variable);
// int(100)

$baseNum += 10;
var_dump($baseNum);
// int(110)

$baseNum -= 30;
var_dump($baseNum);
// int(80)

$baseNum *= 10;
var_dump($baseNum);
// int(800)

$baseNum /= 8;
var_dump($baseNum);
// int(100)

$baseNum %= 7;
var_dump($baseNum);
// int(2)

$baseNum **= 4;
var_dump($baseNum);
// int(16)

var_dump()の後のコメントアウトは、全て実行結果です。
自らに再代入しているので、代入演算が終わった後に変数baseNumの数値が変化するのは、とても面白いですね。
ぜひ覚えておきましょう!

もちろん文字列も足すことができます。

<?php
$baseWord = '私は';
$boysName = 'ボブ';
$fin = 'です';

$baseWord .= $boysName;
var_dump($baseWord);
// string(12) "私はボブ" 

$baseWord .= $fin;
var_dump($baseWord);
// string(18) "私はボブです"

文字を繋ぎ合わせることを、文字列連結と言います。
こちらも合わせて覚えておきましょう。
また、PHPで文字列連結を行う際には+=は使用できず、.=を使用することに注意しましょう!

ちなみに、普通に足すこともできます。

<?php
$sentence = "これは" . "文章" . "です";
var_dump($sentence);
// string(21) "これは文章です"

var_dump()の後のコメントアウトは、実行結果です。
こちらでも+を使用せず.で文字連結を行っています!

比較演算子

種類説明
<a < b 「aがbより小さい」
>a > b 「aがbより大きい」
<=a <= b 「aがb以下」
>=a >= b 「aがb以上」

手を動かしながら見ていきましょう。
index.phpを下記の通り編集してください。

<?php
var_dump(12 < 12);
// bool(false)
var_dump(12 > 32);
// bool(false)
var_dump(12 <= 12);
// bool(true)
var_dump(12 >= 32);
// bool(false)

var_dump()の後のコメントアウトは、全て実行結果です。
比較演算子を使用した時に返ってくる値は、真偽値(true・false)です。
算数や数学で使用していたままの使い方なので、わかりやすいですね。

等価演算子

種類説明
==a == b 「aとbが等しい」
===a === b 「aとbが厳密に等しい」
!=a != b 「aとbが等しくない」
!==a !== b 「aとbが厳密に等しくない」

等価演算子を使用した時に返ってくる値も比較演算子と同じく、真偽値(true・false)です。

さて、等しい厳密に等しい等しくない厳密に等しくないの違いは何でしょうか?
それは、厳密に等しい場合は、データ型も合っているかの確認をします。

言葉で説明するのもあれなので、手を動かしながら見ていきましょう。
index.phpを下記の通り編集してください。

<?php
var_dump(12 == "12");
// bool(true)

var_dump(12 === "12");
// bool(false)

var_dump(12 != "12");
// bool(false)

var_dump(12 !== "12");
// bool(true)

var_dump()の後のコメントアウトは、全て実行結果です。
var_dump(12 == "12")のコードをよく見てください。
左辺が12で右辺が"12"となっています。
つまり、左辺は数値の12であるのに対して、右辺は文字列の12なのです。

しかし、今回の等価演算子は==なので厳密には判断しません。
つまり、双方のデータ型が同じである必要はないんです。

そのため、var_dump(12 == "12")の場合は1212の単純比較なので、trueが返ってきます。

一方で、var_dump(12 === "12")の場合は厳密に判断することになります。
そのため、数値の12と文字列の12では、データ型が違うので、falseが返ってくるようになります。

var_dump(12 != "12")var_dump(12 !== "12")も全く同じです。
var_dump(12 != "12")の場合、厳密に判断しないので、数値の12と文字列の12は等しいと判断されます。
そのため、!=である場合、等しくない場合にtrueとなるので、falseが返されます。

var_dump(12 !== "12")の場合は、厳密に判断するので、数値の12と文字列の12は等しくないと判断されます。
そのため、!==である場合、等しくない場合にtrueとなるので、trueが返されます。

★検索ワード
・PHP 演算子とは
・PHP 算術演算子
・PHP 代入演算子
・PHP 比較演算子
・PHP 等価演算子

次の教材

次の教材は下記から簡単に飛ぶことができます!
引き続きプログラミングを楽しんでいきましょう!

あわせて読みたい
【PHP教材③】条件分岐(if文&switch文)から繰り返し処理(for文&while文&foreach文)の使い方... こちらの記事はPHP教材の第3回目の記事になります。 その他のPHP教材を学習したい方は下記リンクから直接教材へ飛ぶことができます。 【条件分岐について(if & swi...

プログラミング学習サポートについて

「独学で挫折した。。。」

「一人でのプログラミング学習がしんどい。。。」

「未経験からエンジニア転職をしたいけど何をしたら良いかわからない。。。」

このような悩みをお持ちの方向けに、本教材作成者のファドがMENTAという学習サイトにてあなたのプログラミング学習とエンジニア転職を徹底サポートいたします!

サポート価格はなんと1日あたりたったの約300円!

教材で分からない箇所のサポートはもちろんのこと、本サイトで公開しているすべての課題の解答も公開しております。
また、MENTAで学習を終わらせていただいた方限定で懇意にしていただいている企業さんを紹介することもあります!

なお、サポート内容の詳細は下記の通りです。

  • 目標設定
  • マインドセット
  • オリジナル教材見放題
  • オリジナル課題見放題
  • オリジナル課題の解答見放題
  • 課題コードレビュー
  • 教材への無制限質問
  • 課題への無制限質問
  • ポートフォリオ作成アドバイス
  • 褒めのコーチング

いくつかのプランを用意させていただいておりますので、下記より一度ご覧ください!

あわせて読みたい
【プログラミング学習】1日あたりたったの「300円」のみでプログラミングを学び、最短で転職or稼ぐ!|【ME... プログラミングを学びたいすべての方へこれからの時代は格安でプログラミングを学び、最短で稼げ自己紹介はじめまして!この度はプランをご覧いただき、誠にありがとうござ...

コメント

    この記事が気に入ったら
    フォローしてね!

    よかったらシェアしてね!
    • URLをコピーしました!

    コメント

    コメントする

    目次