10日で覚えるPHPのキソ 第 4 回 演算子

No Photo

PHPのキソ(超基礎編)第 4 回は、演算子についてお話します。

第 1 回から第 3 回の間にも、すでにたくさんの演算子が出てきていました。
今回はそれらを含めて、ご説明いたします。

演算子とは?

演算子とは、変数や定数などの値に対して、計算や文字列の連結、比較などの操作を行うために用意されているものです。

この中から、代表的な演算子について解説いたします。
(各演算子の項目はPHPマニュアルへのリンクになっています。あわせてご覧ください。)

代数演算子(算術演算子)

数値の計算を行う時に使う演算子です。
足し算・引き算・掛け算・割り算など、普段計算で使っているものです。

演算子働き使い方結果
+足す$a + $b$a と $b を足し算した結果
-引く$a - $b$a から $b を引き算した結果
*かける$a * $b$a と $b を掛け算した結果
/割る$a / $b$a を $b で割った結果
%あまり$a % $b$a を $b で割った余り

それでは、代数演算子(算術演算子)を使ってプログラムを書いてみましょう。
(<br />は改行をあらわすhtmlのタグです。)

<?php
    // それぞれの変数に値(データ)を代入
    $a = 9;
    $b = 3;
    $c = 10;

    // $a と $b を足し算した結果を$answerに代入
    $answer1 = $a + $b;
    // print関数で表示
    print " $a と $b を足し算した結果は".$answer1."<br />";

    // $a から $b を引いた結果を$answerに代入
    $answer2 = $a - $b;
    // print関数で表示
    print " $a から $b を引いた結果は".$answer2."<br />";

    // $a と $b をかけた結果を$answerに代入
    $answer3 = $a * $b;
    // print関数で表示
    print " $a と $b をかけた結果は".$answer3."<br />";

    // $a を $b で割った結果を$answerに代入
    $answer4 = $a / $b;
    // print関数で表示
    print " $a を $b で割った結果は".$answer4."<br />";

    // $c を $b で割った余りを$answerに代入
    $answer5 = $c % $b;
    // print関数で表示
    print "$c を $b で割った余りは".$answer5."<br />";

?>

ブラウザで表示すると…

9 と 3 を足し算した結果は12
9 から 3 を引いた結果は6
9 と 3 をかけた結果は27
9 を 3 で割った結果は3
10 を 3 で割った余りは1

このようになります。

このプログラムの中には、代数演算子(算術演算子)だけでなく色々な演算子が使われています。
代入演算子の「=」(結果を代入する)
文字列演算子の「.」(文字列をつなぎ合わせる)
このようにプログラムの中で計算したり、値(データ)を変数に代入する際には、演算子が不可欠です。

代入演算子と複合演算子

変数に値や計算結果を代入するための演算子です。
代入演算子(=)と代数演算子などを組み合わせたものを複合演算子といいます。

演算子働き使い方結果
=代入$a = $b$aに$bの値を代入
+=代入$a += $b$aに$bの値を加算して代入($a = $a + $bと同じ)
-=代入$a -= $b$aに$bの値を減算して代入($a = $a - $bと同じ)
*=代入$a *= $b$aに$bの値を乗算して代入($a = $a * $b)
/=代入$a /= $b$aに$bの値を除算して代入($a = $a / $b)
%=代入$a %= $b$aに$bの値を剰余算して代入($a = $a % $b)
.=代入$a .= $b$aに$bの文字列を連結して代入($a = $a.$bに等しい)

いくつかの代入演算子(複合演算子)を使ってプログラムを書いてみましょう。

<?php
    // 変数に値(データ)を代入
    $a = 100;
    $b = 200;

    // $aに$bの値(データ)を代入
    $a = $b;
    // $aは$bの値(200)になります。
    print $a;
?>

ブラウザで表示すると…

200

次に

<?php
    // 変数に値(データ)を代入
    $a = 300;
    $b = 200;

    // $aに$bの値を減算して代入($a = $a - $bと同じ)
    $a -= $b;
    // $aは、$a(300)-$b(200)で100になります。
    print $a;
?>

ブラウザで表示すると…

100

次に

<?php
    // 変数に値(データ)を代入
    $a = "PHPのキソ";
    $b = "第 3 回は";
    $c = "演算子のお勉強です。";

    // $aと$bを連結します。
    $a .= $b;
    // この時点で$aは、"PHPのキソ第 3 回は"です。この文字列に$cを連結します。
    $a .= $c;

    print $a;
?>

ブラウザで表示すると…

PHPのキソ第 3 回は演算子のお勉強です。

比較演算子

数値や変数の値を利用して条件式を作り、その結果によって処理を変えることがあります。
その時に使うのが比較演算子です。
条件が成立した場合を「真(TRUE)」、成立しない場合を「偽(FALSE)」といいます。
この比較演算子の具体的な使い方は、第 5 回 条件分岐の回でお話したいと思います。

演算子比較すること使い方結果
==等しい事$a == $b$a が $b に等しい時に TRUE
===型まで等しい事$a === $b$a が $b に等しく同じ型でである場合に TRUE
!=等しくない事$a != $b$a が $b に等しくない場合に TRUE
<>等しくない事$a <> $b$a が $b に等しくない場合に TRUE
!==(型も)等しくない事$a !== $b$a が $b と等しくないか、同じ型でない場合に TRUE
<より少ない$a < $b$a が $b より少ない時に TRUE
>より多い$a > $b$a が $b より多い時に TRUE
<=より少ないか等しい$a <= $b$a が $b より少ないか等しい時に TRUE
>=より多いか等しい$a >= $b$a が $b より多いか等しい時に TRUE

PHPは、他のプログラミング言語に比べて、データ型が厳密ではありません。

例えば、「TRUE」「1(数字の1)」「"1"(文字列の1)」
これらの値(データ)は型が違います。人間の目で見てもそれぞれ別の値(データ)に見えますが、比較演算子の「==」で比較すると、同じものとして扱われます。
これは「==」が型の違いを比較しないからです。
厳密な比較が必要な際は、「==」ではなく「===」を使うようにしましょう。
(PHP 型の比較表について詳しくは、PHPマニュアルをご覧下さい。

論理演算子

複数の条件を組み合わせて、より複雑な条件を表す時に使うのが論理演算子です。
この論理演算子の具体的な使い方は、第 5 回 条件分岐の回でお話したいと思います。

演算子使い方結果
!! $a$a が TRUE でない場合 TRUE
&&$a && $b$a および $b が共に TRUE の場合に TRUE
||$a || $b$a または $b のどちらかが TRUE の場合に TRUE
and$a and $b$a および $b が共に TRUE の場合に TRUE
or$a or $b$a または $b のどちらかが TRUE の場合に TRUE
xor$a xor $b$a または $b のどちらかが TRUE でかつ両方とも TRUE でない場合に TRUE

「&&」と「and」、「||」と「or」は、判定自体は一緒なのですが、実行される優先度が違います。
「&&」 は 「and」 よりも優先度が高く、「||」 は 「or」 よりも優先度が高く設定されています。
(演算子の優先順位について、詳しくはPHPマニュアルをご覧下さい。

そのため、この2種類の演算子を条件判定式の中で混在させると、判定結果が変わってしまうことがあります。
「判定が一緒だから!」と、混同しないように注意しましょう。

文字列演算子

文字列の演算子は 2 種類あります。
結合演算子「.(ピリオド)」を使うと、文字列をつなぎ合わせることができます。
結合代入演算子「.=」は、ここでは代入演算子(複合演算子)に分類しています。

<?php
    print "PHPのキソ"."第 3 回です。<br />";

    // 文字列と変数の連携
    $title = "PHPのキソ";
    print "タイトルは".$title;
?>
ブラウザで表示すると…
PHPのキソ第 3 回です。
タイトルはPHPのキソ

インクリメント演算子(加算子)/デクリメント演算子(減算子)

演算子結果
++$a$a に 1 を加え、$a を返します。
$a++$a を返し、$a に1を加えます。($aを1加算します。$a = $a + 1 と同じ)
--$a$a から 1 を引き、$a を返します。
$a--$aを返し、$a から 1 を引きます。($aを1減算します。$a = $a - 1 と同じ)
  • $a++と++$aのちがい

インクリメント演算子とデクリメント演算子には、2種類書き方があります。
前置と言われる++$a(--$a)と、後置と言われる$a++($a--)です。
前置と後置では演算を行うタイミングが違います。
前置は変数の参照より先、後置では変数の参照後です。
そのために2つの演算結果には違いがあります。

<?php
    $before = $a = 1;
    // $aに1を足した後に、$beforeに値を代入する
    $before = ++$a;
    print "前置は".$before."<br />";

    $after = $a = 1;
    // $afterに代入した後に、$aに1を足す。
    $after = $a++;
    print "後置は".$after."<br />";

?>

ブラウザで表示すると…

前置は2
後置は1

他にも以下のような演算子があります。
これらの演算子に関して詳しくは、リンク先のPHPマニュアルをご覧下さい。

■ 用語集 ■ 参考文献・サイト
  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ