PHP 演算子
この章では、PHP のさまざまな演算子の使い方について説明します。
PHP では、代入演算子は=変数に値を代入するために使われます。
PHP では、算術演算子は+値を足し合わせるために使われます。
PHP 算術演算子
| 演算子 | 名前 | 説明 | 例 | 結果 |
|---|---|---|---|---|
| x + y | 加 | x と y の和 | 2 + 2 | 4 |
| x - y | 减 | x と y の差 | 5 - 2 | 3 |
| x * y | 乘 | x と y の積 | 5 * 2 | 10 |
| x / y | 除 | x と y の商 | 15 / 5 | 3 |
| x % y | 剰余(除算の余り) | x を y で割った余り | 5 % 2 10 % 8 10 % 2 |
1 2 0 |
| -x | 負の数に設定 | x の符号を反転 | <?php $x = 2; echo -$x; ?> |
-2 |
| ~x | ビット反転 | x をビット反転し、バイナリビット単位で「否定」演算を行います。演算規則: ~1=-2; ~0=-1; |
<?php $x = 2; echo ~$x; ?> |
-3 |
| a . b | 連結 | 2 つの文字列を連結します | "Hi" . "Ha" | HiHa |
次の例では、さまざまな算術演算子を使った場合の異なる結果を示します。
例
試してみる »
PHP7+ バージョンでは整除演算子が追加されましたintdiv()この関数は、最初の引数を2番目の引数で割った値を整数に切り捨てて返します。使用例:
例
上記の例は次のように出力します:
int(3)
PHP 代入演算子
PHP では、基本的な代入演算子は=です。これは、左のオペランドが右の式の値に設定されることを意味します。つまり、$x = 5の値は 5 です。
| 演算子 | と同じ | 説明 |
|---|---|---|
| x = y | x = y | 左のオペランドが右の式の値に設定される |
| x += y | x = x + y | 加 |
| x -= y | x = x - y | 减 |
| x *= y | x = x * y | 乘 |
| x /= y | x = x / y | 除 |
| x %= y | x = x % y | 剰余(除算の余り) |
| a .= b | a = a . b | 2 つの文字列を連結する |
次の例では、さまざまな代入演算子を使った場合の異なる結果を示します。
例
試してみる »
次の例では、さまざまな文字列演算子を使った場合の同じ結果を示します。
例
試してみる »
PHP インクリメント/デクリメント演算子
| 演算子 | 名前 | 説明 |
|---|---|---|
| ++ x | 前置インクリメント | x に 1 を加えてから x を返します |
| x ++ | 後置インクリメント | x を返してから x に 1 を加えます |
| -- x | 前置デクリメント | x から 1 を引いてから x を返します |
| x -- | 後置デクリメント | x を返してから x から 1 を引きます |
次の例では、インクリメント/デクリメント演算子を使った結果を示します。
例
試してみる »
PHP 比較演算子
比較演算子を使用すると、2 つの値を比較できます:
| 演算子 | 名前 | 説明 | 例 |
|---|---|---|---|
| x == y | 等しい | x が y に等しい場合は true を返します | 5==8 は false を返します |
| x === y | 厳密に等しい | x が y に等しく、かつ型が同じ場合は true を返します | 5==="5" は false を返します |
| x != y | 等しくない | x が y に等しくない場合は true を返します | 5!=8 は true を返します |
| x <> y | 等しくない | x が y に等しくない場合は true を返します | 5<>8 は true を返します |
| x !== y | 厳密に等しくない | x が y に等しくない場合、または型が異なる場合は true を返します | 5!=="5" は true を返します |
| x > y | より大きい | x が y より大きい場合は true を返します | 5>8 は false を返します |
| x < y | より小さい | x が y より小さい場合は true を返します | 5<8 は true を返します |
| x >= y | 以上 | x が y 以上の場合、true を返します | 5>=8 は false を返します |
| x <= y | 以下 | x が y 以下の場合、true を返します | 5<=8 は true を返します |
次の例では、いくつかの比較演算子を使った場合の異なる結果を示します。
例
試してみる »
PHP 論理演算子
| 演算子 | 名前 | 説明 | 例 |
|---|---|---|---|
| x and y | と | x と y が両方とも true の場合は true を返します | x=6 y=3 (x < 10 and y > 1) は true を返します |
| x or y | 或 | x と y の少なくとも 1 つが true の場合は true を返します | x=6 y=3 (x==6 or y==5) は true を返します |
| x xor y | 排他的論理和 (XOR) | x と y のうち 1 つだけが true の場合は true を返します | x=6 y=3 (x==6 xor y==3) は false を返します |
| x && y | と | x と y が両方とも true の場合は true を返します | x=6 y=3 (x < 10 && y > 1) は true を返します |
| x || y | 或 | x と y の少なくとも 1 つが true の場合は true を返します | x=6 y=3 (x==5 || y==5) は false を返します |
| ! x | 非 | x が true でない場合は true を返します | x=6 y=3 !(x==y) は true を返します |
PHP 配列演算子
| 演算子 | 名前 | 説明 |
|---|---|---|
| x + y | 和集合 | x と y の和集合 |
| x == y | 等しい | x と y が同じキー/値ペアを持つ場合は true を返します |
| x === y | 恒等 | x と y が同じキー/値ペアを持ち、順序と型も同じ場合は true を返します |
| x != y | 等しくない | x と y が等しくない場合は true を返します |
| x <> y | 等しくない | x と y が等しくない場合は true を返します |
| x !== y | 恒等でない | x と y が等しくない場合は true を返します |
次の例では、いくつかの配列演算子を使った場合の異なる結果を示します。
例
試してみる »
三項演算子
もう 1 つの条件演算子は「?:」(または三項)演算子です。
構文
(expr1) ? (expr2) : (expr3)
expr1 が TRUE と評価された場合の値は expr2 で、expr1 が FALSE と評価された場合の値は expr3 です。
PHP 5.3 以降、三項演算子の中央部分を省略できます。式 expr1 ?: expr3 は、expr1 が TRUE と評価された場合に expr1 を返し、それ以外の場合に expr3 を返します。
例
以下の例では、$_GET リクエストに user 値が含まれているかどうかを判定し、含まれていれば $_GET['user'] を返し、そうでなければ nobody を返します:
例
注意:PHP_EOL改行文字であり、より多くのプラットフォームと互換性があります。
PHP7+ バージョンでは、NULL 合体演算子が追加されました。??、例は次のとおりです:
例
組み合わせ比較演算子 (PHP7+)
PHP7+ は結合比較演算子(combined comparison operator)をサポートしており、これは宇宙船演算子とも呼ばれます。記号は<=>。結合比較演算子を使用すると、2つの変数を簡単に比較できます。もちろん、数値データの比較に限りません。
構文は次のとおりです:
$c = $a <=> $b;
説明は次のとおりです:
- もし $a > $bの場合、$cの値は1。
- もし$a == $bの場合、$cの値は0。
- もし$a < $bの場合、$cの値は-1。
例は次のとおりです:
例
演算子の優先順位
次の表は、優先順位の高い順に演算子を一覧にしています。同じ行の演算子は同じ優先順位を持ち、この場合、それらの結合方向が評価の順序を決定します。
説明:左 = 左から右、右 = 右から左。
| 結合方向 | 演算子 | 追加情報 |
|---|---|---|
| 无 | clone new | clone と new |
| 左 | [ | array() |
| 右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 型とインクリメント/デクリメント |
| 无 | instanceof | 型 |
| 右 | ! | 論理演算子 |
| 左 | * / % | 算術演算子 |
| 左 | + – . | 算術演算子と文字列演算子 |
| 左 | << >> | ビット演算子 |
| 无 | == != === !== <> | 比較演算子 |
| 左 | & | ビット演算子と参照 |
| 左 | ^ | ビット演算子 |
| 左 | | | ビット演算子 |
| 左 | && | 論理演算子 |
| 左 | || | 論理演算子 |
| 左 | ? : | 三項演算子 |
| 右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 代入演算子 |
| 左 | and | 論理演算子 |
| 左 | xor | 論理演算子 |
| 左 | or | 論理演算子 |
| 左 | , | 複数の箇所で使用 |
演算子の優先順位では、or と ||、&& と and はすべて論理演算子であり、効果は同じですが、優先順位は異なります。
例
上記の例の出力結果は次のとおりです:
int(3) bool(true)
括弧の使用
括弧の対応を使用して演算の順序を明確に示し、演算子の優先順位や結合性に頼らないことで、通常はコードの可読性を高めることができます。
例
上記の例の出力結果は次のとおりです:
7 9その他の拡張