Operator & Percabangan (if, match)

Operator aritmetika, perbandingan, logika, spaceship, null coalescing, if/else, switch, dan ekspresi match PHP 8.

Part 3 dari 22 ± 45 menit Gratis

Operator aritmetika

OperatorArtiContoh
+ - * /Tambah, kurang, kali, bagi10 / 4 → 2.5
%Sisa bagi (modulus)10 % 3 → 1
**Pangkat2 ** 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, melempar UnhandledMatchError — 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).

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X