Operator & Percabangan (if, match)
Operator aritmetika, perbandingan, logika, spaceship, null coalescing, if/else, switch, dan ekspresi match PHP 8.
Operator aritmetika
| Operator | Arti | Contoh |
|---|---|---|
+ - * / | Tambah, kurang, kali, bagi | 10 / 4 → 2.5 |
% | Sisa bagi (modulus) | 10 % 3 → 1 |
** | Pangkat | 2 ** 10 → 1024 |
++ -- | Naik / turun 1 | $i++ |
+= -= *= .= | Operasi + penugasan | $total += 5 |
Pembagian / menghasilkan float bila tidak habis dibagi; gunakan intdiv() untuk bilangan bulat. Pembagian dengan nol melempar DivisionByZeroError.
Operator perbandingan & logika
$a === $b // sama nilai & tipe
$a !== $b // tidak sama
$a <=> $b // spaceship: -1, 0, atau 1 (berguna untuk sorting)
$a && $b // dan (juga: and, kurang disarankan)
$a || $b // atau
!$a // bukan
if / elseif / else
$nilai = 78;
if ($nilai >= 85) {
echo "A";
} elseif ($nilai >= 70) {
echo "B";
} else {
echo "C";
}
Operator ternary untuk kondisi singkat: $status = $umur >= 17 ? 'dewasa' : 'anak';. Bentuk singkat ?: mengembalikan nilai kiri bila "truthy": $nama = $input ?: 'Tamu';. Untuk nilai yang mungkin null, pakai ?? — lebih tepat karena tidak menganggap 0 atau "" sebagai kosong.
switch — cara lama
switch ($hari) {
case 'sabtu':
case 'minggu':
echo "Libur";
break; // jangan lupa break!
default:
echo "Kerja";
}
switch memakai perbandingan longgar == dan "jatuh" ke case berikutnya bila lupa break. Itu sumber bug klasik — PHP 8 memberi solusi yang lebih baik:
match — ekspresi baru PHP 8.0
$label = match ($kode) {
200, 201 => 'Berhasil',
404 => 'Tidak ditemukan',
500 => 'Error server',
default => 'Tidak dikenal',
};
Keunggulan match dibanding switch:
- Mengembalikan nilai (ekspresi), jadi bisa langsung ditugaskan atau di-
return - Memakai perbandingan ketat
=== - Tidak ada "fall-through" dan tidak butuh
break - Jika tak ada yang cocok dan tidak ada
default, melemparUnhandledMatchError— bug tidak diam-diam lolos
Untuk kondisi rentang, gunakan trik match (true):
$grade = match (true) {
$nilai >= 85 => 'A',
$nilai >= 70 => 'B',
default => 'C',
};
Operator null: ?? dan ?->
$a ?? $b memberi $b bila $a tidak ada/null. Operator nullsafe ?-> (PHP 8.0) menghentikan rantai bila nilainya null: $user?->alamat?->kota aman walau $user null (hasilnya null, bukan error).