「独習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 | |
17 | and |
18 | xor |
19 | or |
20 | , |