このレッスンはただ今 無料公開中 です。

初学者向け マンツーマン プログラミング・レッスン

PHPの演算子

本章では「演算子」というものについても詳しく触れておくことにします。
演算子は次の4つに大別することができます。

  • 算術演算子
  • 代入演算子
  • 比較演算子
  • 論理演算子

算術演算子

四則演算(足し算・引き算・掛け算・割り算)に加え、剰余・累乗を行うための演算子です。掛け算の記号 × と割り算の記号 ÷ は全角文字のためプログラミングでは使えません。代わりに */ を使います。

演算子 説明
+ 3 + 5 足し算を行う
- 6 - 4 引き算を行う
* 2 * 4 掛け算を行う
/ 10 / 5 割り算を行う
% 10 % 3 割り算の余りを求める
** 2 ** 4 累乗

算術演算子には優先順位があり、多くの場合は一般的な数式と同じ演算結果となります。また、かっこ ( ) も同じように使えます。

代入演算子

変数に値を代入するための演算子です。変数の項で出てきましたね。

$number = 20;
$text = 'こんにちは';

= は算数だと「イコール」つまり「左辺と右辺は等しい」という意味を表しますが、プログラミングではこの記号を「右辺を左辺に代入する」ための演算子として使用します。算数的な「イコール」は == という比較演算子を用います。比較演算子については後ほど詳しく述べます。

演算子 説明
= $number = 20 値を変数に代入する

代入演算子には、算術演算子を組み合わせたいくつかのバリエーションがあります。プログラミング特有の書き方なので戸惑うかもしれませんが、最初は「このようなことができるのだな」程度に頭の片隅にとどめておくだけでよいでしょう。そして、いざコードを書く必要性が出てきたときに、この表を参照しながら書いていけば良いです。何回か書いていく内に体で覚えられます。

演算子 説明
+= $number += 5 左辺の値に右辺の値を足したものを代入する
-= $number -= 5 左辺の値から右辺の値を引いたものを代入する
*= $number *= 3 左辺の値と右辺の値を掛けたものを代入する
/= $number /= 3 左辺の値を右辺の値で割ったものを代入する
%= $number %= 3 左辺の値を右辺の値で割った余りを代入する
<?php
  $a = 5;
  $a += 10; // 5 + 10 = 15
  print($a). PHP_EOL;
  $a -= 3; // 15 - 3 = 12
  print($a). PHP_EOL;
  $a *= 2; // 12 × 2 = 24
  print($a). PHP_EOL;
  $a /= 3; // 24 ÷ 3 = 8
  print($a). PHP_EOL;
  $a %= 5; // 8 ÷ 5 = 1 余り 3
  print($a). PHP_EOL;

比較演算子

左辺と右辺を比較します。比較した結果はBool値(trueかfalse)として得られます。比較演算子は、後述する分岐処理や繰返し処理などの制御構文で大活躍する演算子です。

演算子 説明
== $x == $y 左辺と右辺の値が等しい場合にtrueを返す
=== $x === $y 左辺と右辺の値と型が等しい場合にtrueを返す
!= $x != $y 左辺と右辺の値が等しくない場合にtrueを返す
!== $x !== $y 左辺と右辺の値または型が等しくない場合にtrueを返す
< $x < $y 左辺の値より右辺の値が大きい場合にtrueを返す
> $x > $y 左辺の値より右辺の値が小さい場合にtrueを返す
<= $x <= $y 左辺の値が右辺の値以下の場合にtrueを返す
>= $x >= $y 左辺の値が右辺の値以上の場合にtrueを返す

論理演算子

  • 条件Aを満たし、かつ、条件Bも満たす
  • 条件Aを満たすか、または、条件Bを満たす

このような「かつ」や「または」を表すのに用いられるのが論理演算子です。

演算子 説明
&& $x >= 10 && $x < 20 $xが10以上20未満ならtrueを返す
and $x >= 10 and $x < 20 同上
|| $x < 10 || $x > 20 $xが10未満かまたは20より大きければtrueを返す
or $x < 10 or $x > 20 同上
xor $x < 10 xor $y < 20 $xが10未満かまたは$yが20未満か、どちらか一方だけを満たすならtrueを返す
! !($x == 10) $xが10でなければtrue、10ならばfalseを返す

&&and また、 ||or は、それぞれはほぼ同じです。(優先度など若干の違いはあります)
xor ! この辺は特にややこしいですね。プログラミングらしい論理的思考が必要とされますが、頭で考えるよりはたくさんコードを書いていく中で体にしみついていくものだと思います。今は理解しきれなくても全く問題ありません。本コースの学習を通じて、徐々に身につけていきましょう。