PHP

Operators in PHP are symbols and keywords used to perform calculations, comparisons, and other operations.

Operators 「演算子」

演算子は、変数や値に対して計算や比較、処理を行うための記号やキーワードです。例えば「+」は足し算、「==」は等しいかどうかを調べるといった使い方をします。

主な演算子の種類と簡単な例

算術演算子(計算用)

+
足し算を行います。

PHP

echo 3 + 2; // 5
-
引き算を行います。

PHP

echo 5 - 2; // 3
*
掛け算を行います。

PHP

echo 4 * 2; // 8
/
割り算を行います。

PHP

echo 8 / 2; // 4
%
剰余(余り)を求めます。

PHP

echo 7 % 3; // 1
**
べき乗を計算します。

PHP

echo 2 ** 3; // 8 (2の3乗)
++
変数の値を1増やします。

PHP

$x = 5;
$x++; // 6になる
--
変数の値を1減らします。

PHP

$x = 5;
$x--; // 4になる

代入演算子(値を入れる)

=
右側の値を左側の変数に代入します。

PHP

$x = 5; // $xに5を代入
+=
左側の変数に右側の値を足して再代入します。

PHP

$x = 5;
$x += 3; // $x = $x + 3 と同じ(8になる)
-=
左側の変数から右側の値を引いて再代入します。

PHP

$x = 5;
$x -= 2; // $x = $x - 2 と同じ(3になる)
*=
左側の変数に右側の値を掛けて再代入します。

PHP

$x = 5;
$x *= 2; // $x = $x * 2 と同じ(10になる)
/=
左側の変数に右側の値で割って再代入します。

PHP

$x = 10;
$x /= 2; // $x = $x / 2 と同じ(5になる)
%=
左側の変数に右側の値の剰余を求めて再代入します。

PHP

$x = 5;
$x %= 2; // $x = $x % 2 と同じ(1になる)
**=
左側の変数に右側の値のべき乗を求めて再代入します。

PHP

$x = 2;
$x **= 3; // $x = $x ** 3 と同じ(8になる)

比較演算子(値を比べる)

==
値が等しいかどうかを比較します。

PHP

if (5 == "5") {
	echo "等しい"; // この条件は真
}
===
値が等しいかどうかを型も考慮して比較します。

PHP

if (5 === "5") {
	echo "等しい"; // この条件は偽
}
!= または <>
値が等しくないかどうかを比較します。

PHP

if (5 != 3) {
	echo "等しくない"; // この条件は真
}
<
左側の値が右側の値より小さいかどうかを比較します。

PHP

if (3 < 5) {
	echo "3は5より小さい"; // この条件は真
}
>
左側の値が右側の値より大きいかどうかを比較します。

PHP

if (5 > 3) {
	echo "5は3より大きい"; // この条件は真
}
<=
左側の値が右側の値以下かどうかを比較します。

PHP

if (3 <= 3) {
	echo "3は3以下"; // この条件は真
}
>=
左側の値が右側の値以上かどうかを比較します。

PHP

if (5 >= 5) {
	echo "5は5以上"; // この条件は真
}
!==
値が等しくないか、型が違う場合に真になります。

PHP

if (5 !== "5") {
	echo "等しくないか、型が違う"; // この条件は真
}

論理演算子(条件を組み合わせる)

and または &&
両方の条件が真の場合に真になります。

PHP

if (5 > 3 and 8 > 5) {
	echo "両方の条件が真";
}
or または ||
どちらかの条件が真の場合に真になります。

PHP

if (5 > 3 or 8 < 5) {
	echo "どちらかの条件が真";
}
!
条件を反転させます。

PHP

if (!(5 > 3)) {
	echo "この条件は偽";
}
xor
条件が一方だけ真の場合に真になります。

PHP

if (5 > 3 xor 8 > 5) {
	echo "一方だけ真";
}

文字列演算子(文字をつなげる)

.
文字列を連結します。

PHP

$greeting = "Hello" . " " . "World"; // "Hello World"
.=
左側の文字列に右側の文字列を追加します。

PHP

$greeting = "Hello";
$greeting .= " World"; // $greetingは "Hello World" になる

配列演算子(配列を操作する)

+
2つの配列を結合します。

PHP

$array1 = [1, 2];
$array2 = [3, 4];
$result = $array1 + $array2; // [1, 2, 3, 4]
==
2つの配列が同じキーと値を持つかどうかを比較します。

PHP

$array1 = [1, 2];
$array2 = [1, 2];
if ($array1 == $array2) {
	echo "同じ配列"; // この条件は真
}
===
2つの配列が同じキーと値を持ち、かつ型も同じかどうかを比較します。

PHP

$array1 = [1, 2];
$array2 = [1, 2];
if ($array1 === $array2) {
	echo "同じ配列"; // この条件は真
}
!= または <>
2つの配列が異なるかどうかを比較します。

PHP

$array1 = [1, 2];
$array2 = [1, 3];
if ($array1 != $array2) {
	echo "異なる配列"; // この条件は真
}
!==
2つの配列が異なるか、型が違う場合に真になります。

PHP

$array1 = [1, 2];
$array2 = [1, 3];
if ($array1 !== $array2) {
	echo "異なる配列"; // この条件は真
}

ビット演算子(ビット単位で操作)

&
ビットごとのAND演算を行います。

PHP

echo 5 & 3; // 1 (0101 & 0011 = 0001)
|
ビットごとのOR演算を行います。

PHP

echo 5 | 3; // 7 (0101 | 0011 = 0111)
^
ビットごとのXOR演算を行います。

PHP

echo 5 ^ 3; // 6 (0101 ^ 0011 = 0110)
<<
ビットを左にシフトします。

PHP

echo 5 << 1; // 10 (0101 << 1 = 1010)
>>
ビットを右にシフトします。

PHP

echo 5 >> 1; // 2 (0101 >> 1 = 0010)
~
ビットを反転させます。

PHP

echo ~5; // -6 (ビット反転: 0101 -> 1010)
&&
ビットごとのAND演算を行います。

PHP

echo 5 && 3; // 1 (0101 && 0011 = 0001)
||
ビットごとのOR演算を行います。

PHP

echo 5 || 3; // 1 (0101 || 0011 = 0111)

その他の演算子

?? (Null合体演算子)
左辺の値が nullか未定義 の場合、右辺の値を返します。
左辺が null以外 の場合はそのまま左辺の値を返します。

PHP

$a = null;
$b = $a ?? 'デフォルト';

echo $b; // 'デフォルト'
$anull なので、右辺 'デフォルト' が返されます。

PHP

$a = 'Hello';
$b = $a ?? 'デフォルト';

echo $b; // 'Hello'
$anull ではないため、そのまま $a の値 'Hello' が返されます。

PHP

$a = null;
$b = $a ?? 'デフォルト';
// $a = null, $b = 'デフォルト'
?? は 変数の内容を変更しない ので、$anull のままですが、$b'デフォルト' に設定されます。
??= (Null合体代入演算子)
左辺の値が nullか未定義 の場合のみ、右辺の値を代入します。
左辺が null以外 の場合は代入せず、そのまま保持します。

PHP

$a = null;
$a ??= 'デフォルト';

echo $a; // 'デフォルト'
$anull なので、右辺 'デフォルト' が代入されます。

PHP

$a = 'Hello';
$a ??= 'デフォルト';

echo $a; // 'Hello'
$anull ではないため、代入は行われず、そのまま 'Hello' が保持されます。

PHP

$a = null;
$a ??= 'デフォルト';
// $a = 'デフォルト'
??= は 変数の内容を変更する ので、$a の値が 'デフォルト' に更新されます。
?:
三項演算子。条件が真なら左側、偽なら右側の値を返します。

PHP

$result = (5 > 3) ? "真" : "偽"; // "真"
instanceof
オブジェクトが特定のクラスのインスタンスであるかどうかを確認します。

PHP

$object = new MyClass();
if ($object instanceof MyClass) {
	echo "MyClassのインスタンス";
}