PHP入門 第12回 演算子
PHPの演算子には、3種類あります。
- 単項演算子
- 二項演算子
- 三項演算子
の3つです。
単項演算子は、ひとつの値に対してのみ作用します。
二項演算子は、2つの値に対して作用します。PHPの演算子のほとんどがこの二項演算子になります。
三項演算子は、3つの値に対して作用します。実際の使用例とともに使い方を勉強しましょう。
代数演算子
例 | 意味 | 結果 |
-$a | 負にする | $aの符号が逆 |
$a + $b | 加算 | $a および $b の合計 |
$a – $b | 減算 | $a と $b の差 |
$a * $b | 乗算 | $a および $b の積 |
$a / $b | 除算 | $a および $b の商 |
$a % $b | 剰余 | $a を $b で割った余り |
代入演算子
代入演算子の基本となるものは "=" です。
左オペランドに右オペランドの式の値を設定します。
1 2 3 |
<?php $a = ($b = 4) + 5; // $a は 9 に等しく、$b は 4 にセットされます。 ?> |
ビット演算子
ビット演算子は、整数における特定のビットをオンまたはオフにすることを 可能にします。
もし左辺値と右辺値共に文字列であった場合にはビット演算子は 文字の ASCIIコードに対して作用します。
例 | 意味 | 結果 |
$a & $b | ビット積 | $a および $b の両方にセットされているビット |
$a | $b | ビット和 | $a または $b のどちらかにセットされているビット |
$a ^ $b | 排他的論理和 | $a または $b にセットされており、両方にセットされていないビット |
~ $a | 否定 | $a にセットされているビットはセットせず、そうでないものは逆にする |
$a << $b | 左シフト | $a のビットを左に $b ビットシフトする(各シフトは "2をかける" ことを意味します) |
$a >> $b | 右シフト | $a のビットを右に $b ビットシフトします (各シフトは "2で割る" ことを意味します) |
ビット計算を詳しく知りたい方はこちらをご覧ください。
比較演算子
例 | 意味 | 結果 |
$a == $b | 等しい | $a が $b に等しい時に TRUE。 |
$a === $b | 等しい | $a が $b に等しく同じ型でである場合に TRUE |
$a != $b | 等しくない | $a が $b に等しくない場合に TRUE。 |
$a <> $b | 等しくない | $a が $b に等しくない場合に TRUE。 |
$a !== $b | 等しくない | $a が $b と等しくないか、同じ型でない場合に TRUE |
$a < $b | より少ない | $a が $b より少ない時に TRUE。 |
$a > $b | より多い | $a が $b より多い時に TRUE。 |
$a <= $b | より少ないか等しい | $a が $b より少ないか等しい時に TRUE。 |
$a >= $b | より多いか等しい | $a が $b より多いか等しい時に TRUE。 |
エラー制御演算子
PHP はエラー制御演算子(@)をサポートしています。
PHP の式の前に付けた場合、 その式により生成されたエラーメッセージは無視されます。
1 2 3 4 5 6 7 8 9 |
<?php /* 意図的なエラー */ $my_file = @file ('non_existent_file') or die ("Failed opening file: error was '$php_errormsg'"); // この演算子は関数だけでなく、全ての式で動作します。 $value = @$cache[$key]; // インデックス $key が存在しない場合でも、警告を発生しません。 ?> |
実行演算子
PHP は 1 種類の実行演算子、バッククォート (“) をサポートします。
シングルクォートではないことに注意してください
PHP は、バッククォートの 中身をシェルコマンドとして実行しようとします。
出力が返されます (すなわち、出力を単にダンプするのではなく、変数に代入することが できます) 。
バッククォート演算子の使用は shell_exec() と等価です。
加算子/減算子
例 | 意味 | 効果 |
++$a | 前置加算子 | $a に 1 を加え、$a を返します。 |
$a++ | 後置加算子 | $a を返し、$a に1を加えます。 |
–$a | 前置減算子 | $a から 1 を引き、$a を返します。 |
$a– | 後置減算子 | $aを返し、$a から 1 を引きます。 |
例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php echo "<h3>後置加算</h3>"; $a = 5; echo "5 となります: " . $a++ . "<br>\n"; echo "6 となります: " . $a . "<br>\n"; echo "<h3>前置加算</h3>"; $a = 5; echo "6 となります: " . ++$a . "<br>\n"; echo "6 となります: " . $a . "<br>\n"; echo "<h3>後置減算</h3>"; $a = 5; echo "5 となります: " . $a-- . "<br>\n"; echo "4 となります: " . $a . "<br>\n"; echo "<h3>前置減算</h3>"; $a = 5; echo "4 となります: " . --$a . "<br>\n"; echo "4 となります: " . $a . "<br>\n"; ?> |
論理演算子
例 | 意味 | 結果 |
$a and $b | 論理積 | $a および $b が共に TRUE の場合に TRUE |
$a or $b | 論理和 | $a または $b のどちらかが TRUE の場合に TRUE |
$a xor $b | 排他的論理和 | $a または $b のどちらかが TRUE でかつ両方とも TRUE でない場合に TRUE |
! $a | 否定 | $a が TRUE でない場合 TRUE |
$a && $b | 論理積 | $a および $b が共に TRUE の場合に TRUE |
$a || $b | 論理和 | $a または $b のどちらかが TRUE の場合に TRUE |
文字列演算子
文字列の演算子は 2 種類あります。
1つは結合演算子(‘.’)で、右引数と 左引数を結合したものを返します。
2 番目は、結合代入演算子(‘.=’)で、 この演算子は右側の引数に左側の引数を追加します。
配列演算子
例 | 意味 | 結果 |
$a + $b | 結合 | $a および $b を結合する。 |
$a == $b | 同等 | $a および $b のキー/値のペアが等しい場合に TRUE。 |
$a === $b | 同一 | $a および $b のキー/値のペアが等しく、その並び順が等しく、 かつデータ型も等しい場合に TRUE。 |
$a != $b | 等しくない | $a が $b と等しくない場合に TRUE。 |
$a <> $b | 等しくない | $a が $b と等しくない場合に TRUE。 |
$a !== $b | 同一でない | $a が $b と同一でない場合に TRUE。 |
型演算子
instanceof を使用して、 ある PHP 変数が特定の クラス のオブジェクトのインスタンスであるかどうかを調べます。
演算子の優先順位
演算子の優先順位は、二つの式が"緊密に"結合している度合いを指定します。
1 + 5 * 3 の答えは 16 になり、18 とはなりません。
これは乗算演算子("*")は、加算演算子("+")より高い優先順位を有するか らです。
必要に応じて強制的に優先順位を設定するために括弧を使用する ことが可能です。
例えば、18と評価するためには、 (1 + 5) * 3 とします。 演算子の優先順位が等しい場合は、左から右へ順に評価されます。
結合時の評価 | 演算子 |
結合しない | clone new |
left | [ |
結合しない | ++ – |
結合しない | ~ – (int) (float) (string) (array) (object) (bool) @ |
結合しない | instanceof |
right | ! |
left | * / % |
left | + – . |
left | << >> |
結合しない | < <= > >= <> |
結合しない | == != === !== |
left | & |
left | ^ |
left | | |
left | && |
left | || |
left | ? : |
right | = += -= *= /= .= %= &= |= ^= <<= >>= |
left | and |
left | xor |
left | or |
left | , |
三項演算子
特殊な演算子で
1 |
式1 ? 式2 : 式3; |
の形で使用されます。
使用例から見ていきましょう。
例えばある変数が「5以上の場合は、10を4以下の場合は0を変数に設定する」というような条件文があったとします。
普通if文を使用して
1 2 3 4 5 |
if ($a >= 5) { $a = 10; } else { $a = 0; } |
のような記述します。
しかし、三項演算子を使用すると以下のように書き換えることができます。
1 |
$a = $a >= 5 ? 10 : 0; |
つまり
式1が条件で、その条件がTRUEの場合は、式2の値が設定され、FALSEの場合は式3の値が設定されるのが三項演算子なのです。
コメント:0件
トラックバック:1件
[...] 第12回 演算子 [...]