ホーム > PHPの文法 > 4 演算子 > PHP の 演算子
PHPリファレンス

UPDATE:2020年07月03日

PHP の 演算子

PHP の 演算子 | wepicks!
PHP4 PHP5 PHP7

1 Minute Note

  • PHPの演算子値(オペランドまたは式)を操作して別の値を生成する
  • :例えば 1 という値は 1 という値を持つ式のこと
  • :式とは値があるもののこと
  • 最も簡単な式リテラル値 定数 変数
  • オベランド:演算の対象となる値や変数のこと
  • リテラル:リテラルとは値そのもののこと
  • 演算子は単項演算子 二項演算子 三項演算子の3分類
  • 演算子は計算の優先順位がある
PHP には多くの演算子が用意されています。演算子はあるを操作して別の値を生成することが出来る大切な数式要素です。例えば足し算や引き算、掛け算、割り算で使用する「+(足す)」「(引く)」「*(掛ける)」「/(割る)」などは代表的な演算子です。これらを算術演算子(代数演算子)と言います。算術演算子(代数演算子)以外にも多くの種類の演算子があります。


演算子とは

POINT

  • PHPの演算子値(オペランドまたは式)を操作して別の値を生成する
  • :例えば 1 という値は 1 という値を持つ式のこと
  • :式とは値があるもののこと。最も簡単な式リテラル値 定数 変数
  • オベランド:演算の対象となる値や変数のこと
  • リテラル:リテラルとは値そのもののこと。プログラム内でそのままの形で現れます。例えば「2011」「'hello'」など。

演算子とは、1つ以上の「」(オペランドまたは)を受け取り、操作(足したり、引いたり)を行い、別の値を生み出すもののことです。

例えば、演算子を使用した式は以下のようなものです。

1 という値と 2 という値を「+(加算演算子)」で加算して 3 という値を生み出します。生成した 3 という値を「=(代入演算子)」で 変数 $i に代入しています。
$i を echo で出力すればブラウザに 3 と表示されます。

結果は

3

となります。

演算子の分類

POINT

  • 演算子は 単項演算子 二項演算子 三項演算子 の3分類

演算子は、受け取る値(オペランド)の数によって分類することができます。

単項演算子

単項演算子は、1つの値(オペランド)だけを受け取るもので、「! (論理否定演算子)」 や 「++ (加算子)」 などです。

結果は

2

となります。

二項演算子

二項演算子は、2つの値(オペランド)を受け取ります。代数演算子 である「+ (加算)」や 「- (減算)」 などです。 PHPの殆どの演算子はこの二項演算子です。

結果は

3

となります。

三項演算子

三項演算子は、3つの値(オペランド)を受け取るります。三項演算子は「 ? : 」のみです。三項演算子はその働きから条件演算子というほうが適切です。

結果は

TRUE

となります。

演算子の種類


種類説明
算術演算子(代数演算子)算術演算子(代数演算子)は「足す」「引く」「掛ける」「割る」「余り」
代入演算子代入演算子は変数に値を代入したり、変数の値を更新する
ビット演算子ビット演算子は、整数値をビット値で演算 ビットはコンピュータが処理する最小単位
比較演算子比較演算子は左右のオペランドを比較する 結果と「true(真)」「false(偽)」で返す
加算子(インクリメント演算子)・減算子(デクリメント演算子)加算子/減算子は値を1ずつ増減
文字列演算子文字列演算子は結合と結合代入の2種類
論理演算子論理演算子は論理値を評価し論理値を返す
キャスト演算子キャスト演算子は右辺オペランドのデータ型を指定した型にする
エラー制御演算子エラー制御演算子 @ を式の前に付けると式のエラーは無視される
実行演算子PHPは実行演算子「“(バッククォート)」をサポート
条件演算子(三項演算子)(条件式) ? 真の場合の式 : 偽の場合の式;
配列演算子配列演算子は配列を統合したり比較したりする

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

算術演算子(代数演算子)は一般的な計算「+(足す)」「-(引く)」「*(掛ける)」「/(割る)」「%(余り)」を行うものです。計算の優先順位や結合時の評価は以下の表を確認して下さい。

演算子名前優先順位結合時の評価結果
+加算2left$a + $b$a および $b の和
減算left$a – $b$a と $b の差
*乗算1left$a + $b$a および $b の積
/除算left$a / $b$a および $b の商
%剰余left$a % $b$a を $b で割った余り

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

代入演算子

代入演算子は変数に値を代入したり、変数の値を更新する演算子です。

代表的な代入演算子は「=(イコール)」です。これは、左辺オペランドに右辺オベランドの式の値を代入(式の値を得て代入)するものです。右辺オペランドの式の値を得てから代入します。

演算子名前結合時の評価結果
=代入演算子left$a = $b$b の値を $a に代入
+=加算代入left$a += $ba=a+b
$a + $b の値を $a に代入
-=減算代入left$a -= $ba=a-b
$a – $b の値を $a に代入
*=乗算代入left$a *= $ba=a*b
$a * $b の値を $a に代入
/=除算代入left$a /= $ba=a/b
$a / $b の値を $a に代入
%=乗算代入left$a %= $ba=a%b
$a % $b の値を $a に代入
.=連結代入left$a .= $ba=a.b
$a と $b を連結した値を $a に代入
&ビットAND(論理積)left$a & $b $a および $b の両方にセットされているビットがセットされます
|ビットOR(論理和)left$a | $b $a または $b のどちらかにセットされているビットがセットされます
^ビットXOR(排他論理和)left$a ^ $b $a または $b のどちらか一方にセットされており、両方にセットされていないビットがセットされます
~ビット否定right~ $a $a にセットされているビットはセットせず、そうでないものは逆にします
<<左シフトleft$a << $b $a のビットを左に $b ビットシフトする (各シフトは "2をかける" ことを意味します)
>>右シフトleft$a >> $b $a のビットを右に $b ビットシフトします (各シフトは "2で割る" ことを意味します)

代入演算子

ビット演算子

ビットとは、コンピュータが処理する最小の単位です。ビット演算子は、オペランド(演算の対象となる値や変数のこと)の整数値をビット(2進数)に表現し、特定のビットを評価し演算を行います。つまり、整数値をビット値で演算します。

演算子名前優先順位結合時の評価結果
&ビットAND(論理積)3left$a & $b $a および $b の両方にセットされているビットがセットされます
|ビットOR(論理和)1left$a | $b $a または $b のどちらかにセットされているビットがセットされます
^ビットXOR(排他論理和)2left$a ^ $b $a または $b のどちらか一方にセットされており、両方にセットされていないビットがセットされます
~ビット否定5right~ $a $a にセットされているビットはセットせず、そうでないものは逆にします
<<左シフト4left$a << $b $a のビットを左に $b ビットシフトする (各シフトは "2をかける" ことを意味します)
>>右シフト4left$a >> $b $a のビットを右に $b ビットシフトします (各シフトは "2で割る" ことを意味します)

ビット演算子

比較演算子

比較演算子は左辺オペランド右辺オペランドを比較します(オペランド:演算の対象となる値や変数のこと)。比較の結果が真なら論理値の「true(真)」を返し、そうでない場合は論理値の「false(偽)」を返します(論理型はこちらを参照下さい)。オペランドには数値文字列の両方が使用できます。また他のさまざまな型を比較できます。

演算子名前優先順位結合時の評価結果
==等しい1結合しない$a == $b 型の相互変換をした後で $a が $b に等しい時に TRUE。
===同じ1結合しない$a === $b $a が $b に等しく同じ型である場合に TRUE
!=等しくない1結合しない$a != $b型の相互変換をした後で $a が $b に等しくない場合に TRUE
<>等しくない1結合しない$a <> $b型の相互変換をした後で $a が $b に等しくない場合に TRUE
!==同じでない1結合しない$a !== $b$a が $b と等しくないか、同じ型でない場合に TRUE
>より大きい2結合しない$a > $b$a が $b より大きい時に TRUE
<より小さい2結合しない$a < $b$a が $b より小さい時に TRUE
>=以上2結合しない$a >= $b$a が $b より大きいか等しい時に TRUE
<=以下2結合しない$a <= $b$a が $b より小さいか等しい時に TRUE
<=>宇宙船2結合しない$a <=> $b$a が $b より小さいときに負の値、
$b と等しいときに 0、
$b より大きいときに正の値。(PHP7以降で使用可能)

比較演算子

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

「++(加算子)」「- -(減算子)」はある値を1つずつ増やしたり減らしたりする演算子です。この演算子は変数にのみ適用されます。数値のみでなく文字列が格納された変数に対しても適用することができます。

「++(加算子)」/「- -(減算子)」は bool 型の値には何も変更を加えません。 同じく NULL に減算子を適用しても何も起こりませんが、NULL に加算子を 適用すると 1 となります。

演算子名前優先順位結合時の評価結果
++$a前置加算子1結合しない++$a $a に 1 を加え、$a を返します。
$a++後置加算子1結合しない$a++ $a を返し、$a に1を加えます。
– -$a前置減算子1結合しない– -$a $a から 1 を引き、$a を返します。
$a- –後置減算子1結合しない$a- –$a を返し、$a から 1 を引きます。

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

文字列演算子

文字列演算子は結合「.(ドット)」結合代入「.=(ドットイコール)」の2種類あります。

結合演算子は「.(ドット)」で、左辺オペランドと右辺オペランドを結合したものを返します。

演算子名前優先順位結合時の評価結果
.結合1right$a.$b $a と $b を結合したものを返します。
.=結合代入1right$a.=$b $a に $b を追加したものを返します。

文字列演算子

論理演算子

論理演算子は論理値を評価し、結果を論理値で返します。オペランドは論理値とされます。(オペランドとは演算子の対象となる値のこと)。論理値は「」「」を表す値であり、キーワード「TREU」と「FALSE」で表されます。論理値の詳細についてはこちらを参照下さい。

論理演算子はアルファベット版記号版2種類あります。アルファベット版と記号版では評価の優先順位が異なり、アルファベット版の優先順位が上です。

演算子名前優先順位結合時の評価結果
and論理積3left$a and $b $a および $b が共に TRUE の場合に TRUE
or論理和1left$a or $b $a または $b のどちらかが TRUE の場合に TRUE
xor排他的論理和2left$a xor $b $a または $b のどちらかが TRUE でかつ両方とも TRUE でない場合に TRUE
!否定6right! $a$a が TRUE でない場合 TRUE
&&論理積5left$a && $b $a および $b が共に TRUE の場合に TRUE
||論理和4left$a || $b$a または $b のどちらかが TRUE の場合に TRUE

論理演算子

キャスト演算子

型のジャグリングとは規則に応じて自動的に行われるデータ型の変換のことです。

PHPは必要に応じてデータ型を自動的に変換します。データ型の変換をキャストといいます。

殆どの演算子はオペランド(値あるいは式)に対して前提条件があります。例えば、算術演算子のニ項演算子の場合、2つのオペランドが同じデータ型であることが前提条件になっています。そのためPHPでは前提条件に則るためにデータ型を自動的に変換します。
PHPが自動的に行ってくれるので楽なのですが、どのように変換されるか理解していないと、場合によっては意図しない結果が発生してしまうことがあります。

このように暗黙的に行われるキャストのことを型のジャグリングと言います。型のジャグリングには規則があります。

演算子名前優先順位結合時の評価結果
(string)キャスト1right(string) $a指定したオペランド $a を文字列型として扱う。
(int)(integer)キャスト1right(int) $a指定したオペランド $a を整数型として扱う。
(float)(real)キャスト1right(float) $a指定したオペランド $a を浮動小数点型として扱う。
(bool)(boolean)キャスト1right(bool) $a指定したオペランド $a を論理型として扱う。
(array)キャスト1right(array) $a指定したオペランド $a を配列型として扱う。
(object)キャスト1right(object) $a指定したオペランド $a をオブジェクト型として扱う。
(unset)キャスト1right(unset) $a指定したオペランド $a をNULL型として扱う。

キャスト演算子

エラー制御演算子

エラー制御演算子「@」を式の前につけた場合、その式により生成されたエラーメッセージは無視されます。エラー演算子は全ての式で動作します。

演算子名前優先順位結合時の評価結果
@エラー制御1right@式式により生成されたエラーメッセージは無視されます。

エラー制御演算子

実行演算子

実行演算子は、 (バッククォート)です。バッククォート演算子とも言います。

実行演算子

条件演算子(三項演算子)

条件演算子はオペランド(演算子の対象となる値)を3つ使用するPHP唯一の三項演算子です。条件演算子「? :」は「?」の左辺の式を評価し結果が「真(TRUE)」の場合は「:」の左辺の式の値を返し、「偽(FALSE)」の場合は「:」の右辺の式の値を返します。式に対して式を評価します。PHPの式についてはこちら

演算子名前優先順位結合時の評価結果
? :三項演算子
条件演算子
1left$a ? $b : $c$a が TRUE の場合に $b FALSE の場合に $c。

条件演算子(三項演算子)

配列演算子

配列演算子は配列型のデータを統合したり比較したりする演算子です。

配列演算子としての「+」は、右辺の配列を左辺の配列に追加したものを返します。両方の配列に存在するキーについては左辺の配列の要素が優先され、右辺の配列にあった同じキーの要素は無視されます。 その他の配列演算子については配列演算子の種類を参照下さい。

演算子名前優先順位結合時の評価結果
+結合1left$a + $b$a および $b を結合する。
==同等1結合しない$a == $b$a および $b のキー/値のペアが等しい場合に TRUE。
===同一1結合しない$a === $b$a および $b のキー/値のペアが等しく、その並び順が等しく、 かつデータ型も等しい場合に TRUE。
!=等しくない1結合しない$a != $b$a が $b と等しくない場合に TRUE。
<>等しくない1結合しない$a <> $b$a が $b と等しくない場合に TRUE。
!==同一でない1結合しない$a !== $b$a が $b と同一でない場合に TRUE。

配列演算子

PHPの演算子と優先順位

POINT

  • 演算子は計算の優先順位がある


PHPの演算子 早見表
優先
順位
演算子名前種類結合時の
評価
働き
19newnewnew結合なし新規オブジェクト作成
18[array()array()left配列の添字
17++ 加算子 加算子結合なし増加
  -- 減算子 減算子結合なし 減少
  ~ ビット否定 型 ビット演算子rightビット反転
  (int)
(float)
(string)
(array)
(object)
(bool)
キャスト 型 キャスト演算子right整数型へ変換
浮動小数点型へ変換
文字列型へ変換
配列型へ変換
オブジェクト型へ変換
論理型へ変換
  @ エラー制御 型 エラー制御演算子rightエラー制御
 instanceof結合なし 
 !論理否定(NOT)論理演算子right論理否定(NOT)
16*
/
%
乗算
除算
剰余
代数演算子left乗算
除算
剰余
15+
-
.
加算
減算
文字列結合
代数演算子
代数演算子
文字列演算子
left加算
減算
文字列結合
14<<
>>
左シフト
右シフト
ビット演算子leftビット単位左シフト
ビット単位右シフト
13<
<=
>
>=
より小さい
より小さいか等しい
より大きい
より大きいか等しい
比較演算子結合なしより小さい
より小さいか等しい
より大きい
より大きいか等しい
12==
!=
===
!==
<>
<=>
等しい
等しくない
同じ
同じでない
等しくない
宇宙船
比較演算子結合なし値が等しい
値が等しくない
値と型が同じ
値と型が同じでない
値が等しくない
値がより小さい 等しい より大きい
11& ビット積(AND) ビット演算子leftビット積(AND)
10^ビット排他的論理和(XOR) ビット演算子leftビット排他的論理和(XOR)
9|ビット和(OR) ビット演算子leftビット和(OR)
8&&論理積(AND)論理演算子left論理積(AND)
7||論理和(OR)論理演算子left論理和(OR)
6??NULL合体演算子NULL合体演算子right
6? : 三項演算子
(条件演算子)
三項演算子
(条件演算子)
left条件演算子
5 =
+=
-=
*=
**=
/=
%=
.=
&=
|=
^=
~=
<<=
>>=
=>
代入
加算代入
減算代入
乗算代入
累乗代入
除算代入
乗算代入
連結代入
ビットAND代入
ビットOR代入
ビットXOR代入
ビット否定
左シフト代入
右シフト代入
配列値代入
代入演算子right操作結果の代入
4and 論理積(AND)論理演算子left論理積(AND)
3xor排他的論理和(XOR)論理演算子left排他的論理和(XOR)
2or論理和(OR)論理演算子left論理和(OR)
1,さまざまな利用法さまざまな利用法leftリストの区切り


タグ(=記事関連ワード)

タグ: ,

日付

公開日:2019年11月10日
最終更新日:2020年07月03日

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpref-operators/trackback/

page top