switch PHP
switch
atau switch/case merupakan percabangan atau struktur kontrol yang mirip dengan serangkaian pernyataan if
. Dalam beberpaa kasus terkadang kita perlu melakukan perbandingan sederhana antara variabel atau ekspresi dengan nilai-nilai tertentu, disinilah switch
berguna.
switch
cocok digunakan ketika kita memiliki sebuah variabel dan kita ingin melakukan aksi atau tindakan tertentu berdasarkan nilai dari variabel tersebut. Sama halnya seperti if
, kita bisa memiliki beberapa aksi berdasarkan kondisi tertentu dan aksi default yang akan dieksekusi jika semua kondisi tidak terpenuhi.
Berikut beberapa topik terkait switch PHP yang akan kita bahas:
Sintaks
Berikut sintaks switch yang valid di PHP.
switch (nilai) {
case nilaiPembanding1:
aksi1
break;
case nilaiPembanding2:
aksi2
break;
case nilaiPembandingN:
aksiN
break;
default:
aksiDefault
break;
}
Penjelasan
nilai
adalah nilai yang akan dibandingkan dengan nilai yang ada disebelah kanan kata kunci case
dalam hal ini nilaiPembanding1
, nilaiPembanding2
, dan nilaiPembandingN
.
Misalnya, jika nilai
sama dengan nilaiPembanding1
maka aksi1
akan dieksekusi, jika tidak, interpreter akan memeriksa case
lain dibawahnya secara berurutan, jika semua nilaiPembanding
di case
tidak sama dengan nilai
, maka aksiDefault
akan dieksekusi.
Jika nilai
sama dengan nilaiPembanding
di case
, interpreter akan mengeksekusi aksi yang diblok case
terkait, setelah aksi tersebut selesai dieksekusi dan dibawahnya ada kata kunci break
interpreter akan keluar dari pernyataan switch
tidak mengecek case
lain.
Selama pernyataan switch
di dalam aksi tertentu tidak memiliki kata kunci break
, interpreter PHP akan terus mengeksekusi aksi di dalam case
lain secara berurutan, tidak peduli nilainya.
Contoh
Katakanlah kita ingin mengkonversi hari dalam angka ke nama hari, misalnya angka 1
berarti hari senin
, 2
berarti selasa
dan seterusnya sampai 7
yaitu hari minggu
.
Untuk tujuan ini kita bisa menggunakan switch
, berikut contohnya:
$day = 7;
switch ($day) {
case 1:
echo "senin";
break;
case 2:
echo "selasa";
break;
case 3:
echo "rabu";
break;
case 4:
echo "kamis";
break;
case 5:
echo "jumat";
break;
case 6:
echo "sabtu";
break;
case 7:
echo "minggu";
break;
default:
echo "hari $day tidak ditemukan";
break;
}
// OUTPUT: minggu
Kode di atas akan menghasilkan output minggu
karena nilai dari variabel $day
sama dengan 7
, oleh karena itu aksi echo "minggu"
dieksekusi.
Di atas, kita hanya menangani kondisi ketika nilai $day
berada dalam rentang 1-7, diluar dari itu aksi default yaitu echo "hari $day tidak ditemukan";
akan dieksekusi, silakan coba ubah nilai $day
menjadi 8
atau nilai lain diluar rentang 1-7.
switch
Tanpa break
Bagaimana jadinya jika switch
tidak memiliki break
di setiap aksinya? jika ini dilakukan interpreter akan memeriksa kondisi dibawahnya secara berurutan tidak peduli nilai pembandingnya hingga menemukan kata kunci break
.
Mari kita buktikan.
$day = 2;
switch ($day) {
case 1:
echo "senin";
case 2:
echo "selasa";
case 3:
echo "rabu";
case 4:
echo "kamis";
case 5:
echo "jumat";
case 6:
echo "sabtu";
break;
case 7:
echo "minggu";
break;
default:
echo "hari $day tidak ditemukan";
break;
}
// OUTPUT: selasarabukamisjumatsabtu
Satu Aksi untuk Beberapa case
Pernyataan switch
juga memungkinkan kita untuk melakukan satu aksi berdasarkan beberapa kondisi atau case
.
Mari kita sedikit modifikasi contoh diatas. Misalnya, jika nilai adalah 1 sampai dengan 5 kami ingin mencetak output hari kerja
sedangkan jika 6 sampai 7 kita ingin mencetak hari libur
.
$day = 1;
switch ($day) {
case 1:
case 2:
case 3:
case 4:
case 5:
echo "hari kerja";
break;
case 6:
case 7:
echo "hari libur";
default:
echo "hari $day tidak valid";
break;
}
// OUTPUT: hari kerja
Dengan cara ini kita tidak perlu menulis aksi yang sama di setiap kondisi atau case
.
Nilai Dibandingkan Secara Longgar
Nilai yang ada di dalam tanda kurung setelah kata kunci switch
dibandingkan secara longgar menggunakan operator ==
(bukan ===
) dengan nilai lain di setiap case
.
Mari kita gunakan contoh kode diatas, dalam contoh dibawah, kami mengubah semua nilai pembanding dalam case
ke string
dan mendapatkan hasil yang sama.
$day = 1;
switch ($day) {
case '1':
case '2':
case '3':
case '4':
case '5':
echo "hari kerja";
break;
case '6':
case '7':
echo "hari libur";
default:
echo "hari $day tidak valid";
break;
}
// OUTPUT: hari kerja