PHPプログラミングにおいて、演算子はデータの計算や比較、論理的な判断を行うために欠かせない要素です。
2026年現在、PHP 8系以降のモダンな構文が主流となり、より安全で簡潔なコードを書くための演算子が数多く活用されています。
本記事では、初心者から中級者までが正しく理解しておくべき演算子の種類と、意図しないバグを防ぐための優先順位について詳しく解説します。
PHPで使用される主要な演算子の種類
PHPには多くの演算子が存在しますが、それらは役割ごとにいくつかのグループに分類することができます。
まずは、日常的な開発で頻繁に使用される基本的な演算子から見ていきましょう。
算術演算子
算術演算子は、数値の計算を行うための演算子です。
四則演算(加減乗除)に加えて、剰余(あまり)やべき乗などが含まれます。
| 演算子 | 名称 | 例 |
|---|---|---|
| + | 加算 | $a + $b |
| – | 減算 | $a – $b |
| * | 乗算 | $a * $b |
| / | 除算 | $a / $b |
| % | 剰余 | $a % $b |
| ** | べき乗 | $a ** $b |
以下のコードは、算術演算子を使用した具体的な例です。
<?php
$num1 = 10;
$num2 = 3;
echo $num1 + $num2; // 加算
echo "\n";
echo $num1 % $num2; // 剰余(10を3で割った余り)
echo "\n";
echo $num1 ** 2; // 10の2乗
?>
13
1
100
代入演算子
代入演算子は、変数に値を格納するために使用されます。
基本的な代入記号 = 以外にも、算術演算子と組み合わせた複合代入演算子が存在します。
| 演算子 | 説明 |
|---|---|
| = | 右辺の値を左辺の変数に代入する |
| += | 左辺の値に右辺を足して代入する |
| .= | 左辺の文字列に右辺を連結して代入する |
| ??= | 左辺がnullの場合のみ右辺を代入する(Null合体代入) |
Null合体代入演算子(??=)は、モダンなPHP開発において初期値の設定に非常に便利です。
<?php
$config = [];
$config['timeout'] ??= 30; // 'timeout'が未定義またはnullなら30を代入
echo $config['timeout'];
?>
30
比較演算子
比較演算子は、2つの値を比較して真偽値(true または false)を返します。
PHPでは、型を厳格に比較するかどうかが非常に重要になります。
| 演算子 | 名称 | 内容 |
|---|---|---|
| == | 等しい | 型を変換して値が等しければtrue |
| === | 厳密に等しい | 値と型が両方一致すればtrue |
| != | 等しくない | 型を変換して値が異なればtrue |
| !== | 厳密に等しくない | 値または型が異なればtrue |
| <=> | 宇宙船演算子 | 左辺が大きい場合は1、等しければ0、小さい場合は-1を返す |
実務においては、バグを未然に防ぐために可能な限り「===」を使用することが推奨されます。
<?php
$value = "100";
var_dump($value == 100); // true (型が自動変換される)
var_dump($value === 100); // false (型が異なるため)
?>
bool(true)
bool(false)
論理演算子と条件分岐
論理演算子は、複数の条件を組み合わせる際に使用されます。
「かつ(AND)」「または(OR)」「否定(NOT)」などの制御を記述します。
よく使われる論理演算子
論理演算子には、記号(&&, ||)を使うものと英単語(and, or)を使うものの2種類があります。
基本的には、優先順位が高い「&&」や「||」を使用するのが一般的です。
&&(AND): 両方の条件が真のときにtrue||(OR): どちらか一方の条件が真のときにtrue!(NOT): 真偽値を反転させる
以下のコードは、複数の条件をチェックする例です。
<?php
$age = 25;
$has_license = true;
if ($age >= 18 && $has_license) {
echo "運転可能です。";
}
?>
運転可能です。
モダンPHPで重要な演算子
2026年のPHP開発現場では、コードの可読性と安全性を高める新しい演算子が頻繁に活用されています。
特にNull(空の状態)を安全に扱うための演算子は必須の知識です。
Null合体演算子 (??)
Null合体演算子 ?? は、変数がnullである場合にデフォルト値を返します。
従来の isset() と三項演算子を組み合わせた記述を短縮できるメリットがあります。
<?php
$user_name = $_GET['user'] ?? 'ゲスト';
echo $user_name;
?>
Nullsafe演算子 (?->)
オブジェクトのメソッドやプロパティにアクセスする際、そのオブジェクトがnullであってもエラーを発生させずにnullを返します。
Nullsafe演算子を使うことで、冗長なif文によるnullチェックを排除できます。
<?php
// $userがnullでもエラーにならず、$countryはnullになる
$country = $user?->getAddress()?->country;
?>
演算子の優先順位と結合規則
数式や論理式の中に複数の演算子が含まれる場合、どの計算を先に行うかを決めるのが「優先順位」です。
優先順位を誤ると、プログラムは期待した結果を出しません。
演算子の優先順位一覧(抜粋)
以下の表は、主要な演算子の優先順位を高い順に並べたものです。
| 順位 | 演算子 | 結合規則 |
|---|---|---|
| 1 | ** | 右 |
| 2 | ! , ++ , — | 右 |
| 3 | * , / , % | 左 |
| 4 | + , – , . | 左 |
| 5 | < , <= , > , >= | 非結合 |
| 6 | == , === , != , !== | 非結合 |
| 7 | && | 左 |
| 8 | || | 左 |
| 9 | ?? | 右 |
| 10 | = , += , -= , *= , ??= | 右 |
優先順位による挙動の違い
例えば、足し算よりも掛け算が優先されるのは算数と同じです。
しかし、論理演算子や代入演算子が混ざると複雑になります。
<?php
$result = 5 + 3 * 2;
echo $result; // 5 + (3 * 2) = 11
$bool = true || false && false;
var_dump($bool); // true || (false && false) = true
?>
11
bool(true)
意図した順序で計算を行いたい場合は、カッコ () を使用して明示的にグループ化することが最も安全な対策です。
カッコを使うことで、誰が読んでも理解しやすいコードになります。
まとめ
PHPの演算子は、数値計算からNullの制御まで多岐にわたる機能を提供しています。
特に2026年現在の開発では、厳密な比較演算子(===)や、Nullを安全に扱う演算子(??, ?->)の使いこなしが重要です。
また、複雑な条件式を書く際は演算子の優先順位を意識し、必要に応じてカッコを活用することで可読性の高いコードを目指しましょう。
これらの基本を正しく理解することで、エラーの少ない高品質なPHPプログラムを構築できるようになります。
