10日で覚えるPHPのキソ 第 4 回 演算子
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マニュアルをご覧下さい。