第2週


演算子

演算子(オペレータ)

与えられた変数やリテラルに対して、あらかじめ決められた処理を行う記号。
大きく分けると、以下のような種類がある。

  • 代数演算子
  • 代入演算子
  • 比較演算子
  • 論理演算子
  • ビット演算子

代数演算子

算術演算子ともいう。
四則演算をはじめ、日常的な数学で利用する演算子。

+, -, *, /
% 数値の剰余
++ 前置加算・後置加算
-- 前置減算・後置減算

文字列混在の演算

サンプル1

加算子・減算子

++
加算子。インクリメント演算子
与えられたオペランド(被演算子)に対して1加算

--
減算子。デクリメント演算子
与えられたオペランドに対して1減算

サンプル2


マジカルインクリメント

アルファベットと数値が混在した文字列に対して加算演算子を適用すると、
末尾がアルファベットであれば次の文字へ、
数値であれば1加算するという処理を行う。

末尾の文字がZ(z)、まは9であった場合には、一つ前の文字に対していわゆる「桁の繰り上げ」を行う。

サンプル3

※しかい、減算子を用いた「マジカルデクリメント」のような機能はない

配列の結合

加算演算子は配列の加算(結合)にも可能。
左の配列に存在しないキーの要素を右配列から取り出し、左の配列に結合する。

サンプル4

代入演算子

左辺で指定した変数に対して、右辺の値を代入するための演算子

=, +=, -=, *=, /=, %=, .=, &=, |=, ^=, <<=, >>=

値による代入と参照による代入

=& について

ホワイトボードで解説?

比較演算子

==, ===, !=, <>, !==, <, >, <=, >=, ?:

文字列混在の比較

サンプル5

配列の比較

配列も比較演算子を使って比較が可能。
配列の比較は以下の手順で行われる。

1. 要素数で比較
2. 要素数が同じ場合、同じキーを持つ要素同士で大小を比較。
  より大きい要素/小さい要素が見つかった時点で判定終了。
3. 1, 2のすべてが等しい場合、両者は等しいとみなされる。

サンプル6

※ただし、比較する配列に同じキーがなかった場合、エラーになる

サンプル7

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

条件演算子は、指定された条件式の真偽に応じて、対応する式の値を出力する。

これら2つは同じ出力結果となる。

if ($x >= 75) {
    echo '合格';
} else {
    echo '不合格';
}
echo $x >= 75 ? '合格' : '不合格';

論理演算子

  • 論理積    &&, and
  • 論理和 ||, or
  • 排他的論理和 xor
  • 否定     !

論理積・論理和にそれぞれ演算子が2種類ずつ用意されているのは、
演算の優先順位が違うため。
&&, ||の方が、and, orよりも早く評価される。

ショートカット演算(短絡演算)

  • 論理積の場合:&&, and
     左辺の式がfalseである場合、右辺の式に関わらず式全体がfalseになるため、
     右辺の式を評価しない(実行しない)
  • 論理和:||, or
     左辺の式がtrueである場合、右辺の式に関わらず式全体がtrueになるため、
     右辺の式を評価しない(実行しない)

サンプル8


ビット演算子

ビット演算を行うための演算子

  • 論理積    &
  • 論理和    |
  • 排他的論理和 ^
  • 否定     
  • <<      ビットを左にシフト
  • >>      ビットを右にシフト

サンプル9

その他の演算子

文字列演算子

. 文字列を結合する。

実行演算子

` バッククォートで囲んだ部分をシェルコマンドとして実行する

エラー制御演算子

@ エラーを表示しないようにずる。

サンプル10


演算子の優先順位と結合法則

優先順位

演算子には、処理を行うときの優先順位がある。

演算子の優先順位

結合法則

異なる演算子の処理順序を決めるのが優先順位であれば、
同じ優先順位の演算子を処理する順序を決めるのが結合則。

演算子を左→右、右→左のいずれの方向に処理するか決めるルール。 以下、のような種類がある。

  • 左結合
  • 右結合
  • 非結合

左結合

一般的な処理の流れ。
算術演算子、ビット演算子、論理演算子、条件演算子はコレ。

右結合

代入演算子と否定演算子がこの部類に入る


非結合

比較演算子やキャスト演算子がこの性質を持つ。 同じ優先順位で、非結合の性質を持つ演算子を並べた場合にはエラーになる。


参考資料

  • 独習PHP 第2版