独習PHP」を元に、要約メモしておきたいと思います。

代数演算子

演算子 概要
+ ふたつの数値の和 $x + $y
ふたつの数値の差 $x – $y
* ふたつの数値の積 $x * $y
/ ふたつの数値の商 $x / $y
% ふたつの数値の割り算を行い、その余り $x % $y
++ 前置加算(代入後に加算) $i++
++ 後置加算(代入前に加算) ++$i
前置減算(代入後に減算) $i–
後置減算(代入前に減算) –$i

++は指定された変数の値を増減するための演算子で、インクリメント(加算子)やデクリメント(減算子)とも言う。例えば次の2つの式は意味的に等価。

$x=$X+1;
$x++;

前置演算と後置演算は、加算(減算)した結果を代入してから値を返すか、値を返してから加算(減算)を行うかという点で異なる。

<?php
$x=1;
print ($x++.'<br />');
print ($x.'<br />');
print (++$x.'<br />');
print ($x.'<br />');
?>

1 2 3 3

代入演算子

変数への代入を行うための演算子。代入演算子には、代数演算子と合わせた機能を提供する複合代入演算子も含まれる。

演算子 概要 用例
= 値を変数などに代入する $x=10
+= 左辺の値に右辺の値を加えたものを、左辺に代入する $x+=10、$x=$x+10
-= 左辺の値から右辺の値を引いたものを、左辺に代入する $x-=10、$x=$x-10
*= 左辺の値に右辺の値を掛けたものを、左辺に代入する $x*=10、$x=$x*10
/= 左辺の値を右辺の値で割ったものを、左辺に代入する $x/=10、$x=$x/10
%= 左辺の値を右辺の値を割った余りを、左辺に代入する $x%=10、$x=$x%10
.= 左辺の値に右辺の値を連結した文字列を、左辺に代入する $x.=”A”、$x=$x.”A”

比較演算子

左辺と右辺の値を比較し、評価結果をTRUE/FALSEで返す。if、while、do…while命令の条件式で使用する。

演算子 概要
== 左辺と右辺が等しい場合にTRUEを返す $x==1
=== 左辺と右辺が等しく、かつ同じデータ型の場合にTRUEを返す

$flag===TRUE

!= 左辺と右辺が等しくない場合にTRUEを返す $x!=10
!== 左辺と右辺が等しくない、または同じデータ型でない場合にTRUEを返す $flag!==TRUE
< 左辺が右辺より小さい場合にTRUEを返す $x<10
> 左辺が右辺より大きい場合にTRUEを返す $x>10
<= 左辺が右辺以下のときにTRUEを返す $x<=10
>= 左辺が右辺以上のときにTRUEを返す $x>=10
? (条件式)?(式1):(式2) 条件式がTRUEの場合は式1、FALSEの場合は式2を返す $x>10 ? “OK” : “NG”

?演算子は三項演算子とも呼ばれ、指定された条件式の真偽に応じて異なる式(値)を出力したい場合などに使用する。

論理演算子

複数の条件式を論理的に結合するための演算子。前項の比較演算子と組み合わせて使用するのが一般的。

演算子 概要
&&(and)

左式/右式と双方がTRUEの場合にTRUEを返す

$x==10 && $z==100
||(or) 左式/右式といずれかがTRUEの場合にTRUEを返す $x==1 || $x==2
xor 左式/右式いずれかがTRUEで、かつ双方ともTRUEではない場合にTRUEを返す $x==10 xor $x==100
!

式がFALSEである場合にTRUEを返す

!$flag

AND演算子(&とand)とOR演算子(||とor)がそれぞれ2つ用意されているのは、評価される際の優先順位が異なるため。

ビット演算子

ビット単位(整数を2進法で表したときの各桁)で論理演算を行うための演算子。

演算子 概要
& 左式/右式の双方でセットされているビットをセットする 10&1 → 1010&0001 → 0000 → 0
| 左式/右式のいずれかでセットされているビットをセットする 10|1 → 1010|0001 → 1011 → 11
^ 左式/右式のいずれかでセットされており、かつ、双方にセットされていないビットをセットする 10^1 → 1010^0001 → 1011 → 11
~ ビットを反転させる ~10 → ~1010 → 0101 → -11
<< ビットを左にシフトする 10<<1 → 1010<<1 → 10100 → 20
>> ビットを右にシフトする 10>>1 → 1010>>1 → 0101 → 5

その他の演算子

演算子 概要
. 文字列連結。左式と右式を連結する $memo.$title
@ 式の先頭に指定することでエラーメッセージを非表示にする @fopen(“sample.dat”)
` バッククォート(`)で囲んだブロックをシステムコマンドとして実行 `dir`

@演算子はエラー演算子とも言い、特定の命令の先頭に付加することで、その命令で発生したエラーメッセージの出力を抑制する。

<?php
print(1/0);
?>

Warming: Division by zero in ~atmark.php on line 2

除算を0で行うことは許されていないので警告メッセージが表示されるが、print命令の先頭に@演算子をつけることで、警告メッセージが抑制され、表示されなくなる。

<?php
@print(1/0);
?>

演算子の優先順位

優先順位 演算子
1 new
2 [
3 ! ~ ++ — (int) (double) (string) (array) (object) @
4 * / %
5 + – .
6 << >>
7 < <= > >=
8 == != === !==
9 &
10 ^
11 |
12 &&
13 ||
14 ? :
15 = += -= *= /= .= %= &= |= ^= ~= <<= >>=
16 print
17 and
18 xor
19 or
20 ,

こちらの関連記事もあわせてどうぞ!