Materi
`if`, `elseif`, dan `else` memeriksa kondisi dari atas ke bawah. Begitu satu kondisi benar, bloknya dijalankan dan sisanya dilewati, walaupun kondisi di bawahnya juga benar. Karena itu urutan kondisi menentukan hasil: kondisi yang paling sempit ditulis paling atas.
`match`, tersedia sejak PHP 8, adalah ekspresi yang menghasilkan nilai. Nilai yang diperiksa dibandingkan dengan setiap lengan memakai `===`, jadi string "2" tidak cocok dengan angka 2. Hanya satu lengan yang dijalankan, tanpa perlu break. Bila tidak ada lengan yang cocok dan tidak ada `default`, PHP melempar `UnhandledMatchError`. Untuk rentang nilai, tulis `match (true)` dengan kondisi di setiap lengan; lengan pertama yang bernilai true dipakai.
<?php
$berat = 4;
$tarif = match (true) {
$berat <= 2 => 9000,
$berat <= 5 => 8000,
default => 7000,
};
echo $tarif; // 8000`switch` lebih tua dan bekerja berbeda. Perbandingannya longgar (`==`), dan setelah satu `case` cocok, PHP menjalankan semua pernyataan di bawahnya sampai bertemu `break`, termasuk isi `case` berikutnya.