PHP Academy · Pelajaran

Pernyataan Switch dan Match

Menggunakan switch dan match PHP 8 untuk logika bercabang banyak.

Pelajaran 2 dari 413 langkah

Pernyataan Switch dan Match adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Rangkaian switch vs if

Ketika Anda memiliki banyak cabang berdasarkan nilai satu variabel, switch lebih rapi daripada rangkaian if/elseif yang panjang.

PHP 8 memperkenalkan match sebagai alternatif modern yang ketat.

Dasar-Dasar Pernyataan switch

Switch mengevaluasi ekspresinya satu kali dan menjalankan blok case yang cocok:

<?php
$day = 'Monday';

switch ($day) {
    case 'Monday':
        echo 'Start of work week';
        break;
    case 'Friday':
        echo 'Almost weekend';
        break;
    default:
        echo 'Midweek';
}

Perilaku Pelanjutan Eksekusi

Tanpa break, eksekusi berlanjut ke case berikutnya — trik pengelompokan yang disengaja:

<?php
$status = 2;

switch ($status) {
    case 1:
    case 2:
    case 3:
        echo 'In progress';  // runs for 1, 2, or 3
        break;
    case 4:
        echo 'Done';
        break;
}

Switch Menggunakan Perbandingan Longgar

Switch menggunakan == (perbandingan longgar) secara internal — hal ini dapat menyebabkan kecocokan yang mengejutkan:

<?php
$val = 0;

switch ($val) {
    case 'foo':   // 0 == 'foo' in PHP 7!
        echo 'match foo';
        break;
    case 0:
        echo 'match zero';  // PHP 8 fixes this
        break;
}
// PHP 8: match zero (fixed)
// PHP 7: match foo (bug!)

Ekspresi match di PHP 8

match mirip dengan switch, tetapi menggunakan perbandingan ketat, mengembalikan nilai, dan tidak memerlukan break:

<?php
$status = 'active';

$label = match($status) {
    'active'   => 'Currently active',
    'inactive' => 'Not active',
    'pending'  => 'Awaiting activation',
    default    => 'Unknown status',
};

echo $label; // Currently active

match Tanpa Pengecualian Kecocokan

Jika tidak ada cabang yang cocok dalam match dan tidak ada default, PHP melempar UnhandledMatchError:

<?php
$code = 99;

try {
    $result = match($code) {
        200 => 'OK',
        404 => 'Not Found',
        500 => 'Server Error',
        // no default!
    };
} catch (\UnhandledMatchError $e) {
    echo 'Unhandled match value: ' . $code;
}

match dengan Beberapa Kondisi

Satu cabang match dapat mencantumkan beberapa nilai yang dipisahkan dengan koma:

<?php
$lang = 'tr';

$region = match($lang) {
    'en', 'en-US', 'en-GB' => 'English',
    'tr', 'az'             => 'Turkic',
    'fr', 'be', 'ca'       => 'French-speaking',
    default                => 'Other',
};

echo $region; // Turkic

match dengan Ekspresi Kompleks

Cabang match dapat menggunakan ekspresi sembarang di sisi kanan:

<?php
$score = 85;

$grade = match(true) {
    $score >= 90 => 'A',
    $score >= 80 => 'B',  // matches
    $score >= 70 => 'C',
    default      => 'F',
};

echo $grade; // B

return dari match

Karena match adalah sebuah ekspresi, match dapat digunakan di mana pun sebuah nilai diharapkan:

<?php
function getHttpMessage(int $code): string {
    return match($code) {
        200 => 'OK',
        201 => 'Created',
        400 => 'Bad Request',
        401 => 'Unauthorized',
        404 => 'Not Found',
        default => 'Unknown',
    };
}

echo getHttpMessage(404); // Not Found

switch dalam Konteks return

Switch dapat digunakan di dalam fungsi untuk mengembalikan nilai yang berbeda, tetapi match lebih rapi:

<?php
function describe(int $n): string {
    switch (true) {
        case $n < 0:  return 'negative';
        case $n === 0: return 'zero';
        default:       return 'positive';
    }
}

echo describe(-5);  // negative
echo describe(0);   // zero
echo describe(7);   // positive

Kapan Menggunakan switch vs match

Panduan untuk memilih:

  • Gunakan match ketika Anda memerlukan perbandingan ketat dan nilai kembalian (PHP 8+)
  • Gunakan switch untuk pengelompokan dengan pelanjutan eksekusi atau ketika mendukung PHP 7
  • Keduanya lebih rapi daripada rangkaian if/elseif yang panjang untuk percabangan dengan banyak nilai

Pemeriksaan Singkat

Apa yang terjadi dalam ekspresi match ketika tidak ada cabang yang cocok dan tidak ada default?

Ringkasan: switch dan match

Perbedaan utama:

  • switch — perbandingan longgar, pelanjutan eksekusi, PHP 4+
  • match — perbandingan ketat, tanpa pelanjutan eksekusi, mengembalikan nilai, PHP 8+
  • match melempar UnhandledMatchError tanpa default
  • Cabang match menerima beberapa nilai yang dipisahkan dengan koma

Berikutnya: perulangan for dan while.

Gratis untuk memulai

Belajar PHP dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
49
Pelajaran
195

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pernyataan Switch dan Match” gratis?

Ya — teks lengkap “Pernyataan Switch dan Match” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pernyataan Switch dan Match”?

Menggunakan switch dan match PHP 8 untuk logika bercabang banyak. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Pernyataan Switch dan Match” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. if, elseif, dan else
  2. Pernyataan Switch dan Match
  3. Perulangan for dan while
  4. foreach dan Kontrol Perulangan
← Kembali ke PHP Academy