Struktur alur program yang akan kita bahas berikutnya adalah tentang pengertian dan cara penulisan struktur Switch dalam PHP. Struktur switch ini dapat digunakan sebagai pengganti struktur IF.
Pengertian Struktur logika Switch
Struktur logika switch adalah sebuah stuktur percabangan yang akan memeriksa suatu variabel, lalu menjalankan perintah-perintah yang sesuai dengan kondisi yang mungkin terjadi untuk variabel tersebut. Struktur switch ini mirip dengan struktur IF yang ditulis berulang.
Katakan kita ingin membuat sebuah program yang akan menampilkan kata dari angka 0-5, sehingga terdapat 6 kemungkinan yang terjadi. Jika menggunakan struktur IF, maka kita akan membutuhkan 6 perulangan sebagai berikut:
<?php $a=3; if ($a=="0") { echo "Angka Nol"; } elseif ($a=="1") { echo "Angka Satu"; } elseif ($a=="2") { echo "Angka Dua"; } elseif ($a=="3") { echo "Angka Tiga"; } elseif ($a=="4") { echo "Angka Empat"; } elseif ($a=="5") { echo "Angka Lima"; } else echo "Angka diluar jangkauan"; ?>
Tidak ada yang salah dari kode program tersebut, namun jika kita menggunakan switch, kode tersebut dapat ditulis menjadi:
<?php $a=3; switch ($a) { case 0 : echo "Angka Nol"; break; case 1 : echo "Angka Satu"; break; case 2 : echo "Angka Dua"; break; case 3 : echo "Angka Tiga"; break; case 4 : echo "Angka Empat"; break; case 5 : echo "Angka Lima"; break; default : echo "Angka diluar jangkauan"; break; } ?>
Kedua kode program akan menghasilkan output yang sama, namun untuk kondisi logika yang diuji merupakan kondisi sederhana, penulisan dengan switch lebih disarankan dibandingkan IF.
Aturan Penulisan Struktur Switch dalam PHP
Seperti yang terlihat dalam contoh sebelumnya, struktur switch terdiri dari beberapa bagian, berikut format dasar penulisan switch dalam PHP:
switch ($var) { case value1: statement1; break; case value2: statement2; break; }
Setelah kata kunci switch, kita harus mencantumkan variabel yang akan diperiksa nilainya didalam tanda kurung, lalu memulai block switch dengan kurung kurawal.
Tiap kondisi yang mungkin terjadi dicantumkan setelah kata kunci case, lalu diikuti dengan nilai yang akan dibandingkan dengan nilai variabel switch. Jika kondisi sesuai, maka baris program statement akan dijalankan. Kata kunci break digunakan untuk keluar dari switch, sehingga PHP tidak perlu memeriksa case berikutnya.
Alur program untuk switch akan dieksekusi dari baris pertama sampai terakhir. Kata kunci break memegang peranan penting untuk menghentikan switch.
Perhatikan contoh kode PHP berikut:
<?php $a=1; switch ($a) { case 0: echo "Angka Nol "; case 1 : echo "Angka Satu "; case 2 : echo "Angka Dua "; case 3 : echo "Angka Tiga "; } ?>
Program diatas akan memeriksa nilai dari $a, dan memberikan output tergantung kepada nilai $a tersebut. Jika sekilas dilihat, maka keluaran program adalah: “Angka Satu” sesuai dengan nilai variabel $a. Akan tetapi, jika anda menjalankan program diatas, PHP akan memberikan output berupa:
Angka Satu Angka Dua Angka Tiga
Apa yang terjadi? Hal ini terkait dengan bagaimana PHP menjalankan proses switch.
Ketika program dijalankan, PHP pertama kali akan memeriksa case 0, yaitu apakah $a sama dengan 0, jika tidak, PHP akan lanjut ke case 1, dan memeriksa apakah $a sama dengan 1. Jika iya, maka PHP akan menjalankan echo “Angka Satu”, beserta seluruh perintah program pada case-case dibawahnya. Hal ini mungkin terkesan aneh, namun adakalanya proses seperti inilah yang dibutuhkan.
Namun, untuk kasus diatas, kita ingin mengistruksikan kepada PHP bahwa setelah case ditemukan, maka switch harus berhenti.
Untuk instruksi ini, kita harus menggunakan kata kunci break. Instruksi break memberitahu PHP untuk segera keluar dari switch, dan tidak menjalankan case lainnya.
Berikut adalah kode program switch kita setelah ditambahnya keyword break:
<?php $a=1; switch ($a) { case 0: echo "Angka Nol "; break; case 1 : echo "Angka Satu "; break; case 2 : echo "Angka Dua "; break; case 3 : echo "Angka Tiga "; break; } ?>
Selain kata kunci break, PHP menyediakan kata kunci default untuk alur switch. Kata kunci ini berfungsi seperti ELSE di dalam struktur IF, yakni kondisi dimana seluruh case untuk switch tidak ada yang cocok. Kata kunci default ini diletakkan di akhir dari switch.
Untuk contoh kita diatas, saya akan menambahkan bagian default sebagai perintah yang akan dijalankan jika nilai dari variabel $a duluar dari angka 0-5. Berikut kode PHP nya:
<?php $a=9; switch ($a) { case 0: echo "Angka Nol "; break; case 1 : echo "Angka Satu "; break; case 2 : echo "Angka Dua "; break; case 3 : echo "Angka Tiga "; break; default : echo "Angka diluar jangkauan"; break; } ?>
PHP membolehkan kita menjalankan satu statement saja untuk case yang berlainan, seperti contoh kode PHP berikut ini:
<?php $a=3; switch ($a) { case 0 : case 1 : case 2 : case 3 : echo "Angka berada di dalam range 0-3"; break; case 4 : case 5 : case 6 : case 7 : echo "Angka berada di dalam range 4-7"; break; default : echo "Angka diluar jangkauan"; break; } ?>
Didalam kode diatas, saya menyatukan beberapa case ke dalam 1 statement.
Penulisan case untuk struktur switch menyesuaikan dengan jenis tipe data yang akan diuji. Sampai dengan bagian ini, saya hanya menggunakan contoh case untuk variabel dengan tipe angka, namun jika anda menggunakan switch untuk tipe data string, maka kita harus menggunakan tanda kutip untuk case.
Berikut contoh kode switch PHP untuk tipe data string:
<?php $a=dua; switch ($a) { case "nol": echo "Angka 0 "; break; case "satu" : echo "Angka 1 "; break; case "dua" : echo "Angka 2 "; break; case "tiga" : echo "Angka 3 "; break; default : echo "Angka diluar jangkauan"; break; } ?>
Perbedaan Antara struktur IF dengan Switch
Walaupun memiliki tujuan yang hampir sama, namun struktur IF dan switch memiliki perbedaan yang mendasar.
Didalam struktur switch, kondisi logika hanya akan diperiksa satu kali saja, yaitu pada awal perintah switch, dan hasilnya di bandingkan dengan setiap case. Akan tetapi di dalam struktur if, setiap kondisi akan selalu diperiksa. Sehingga jika anda memiliki struktur percabangan yang banyak, struktur switch akan lebih cepat dieksekusi.
Namun disisi lain, switch memiliki keterbatasan dalam jenis operasi perbandingan yang dapat dilakukan. Operasi perbandingan di dalam switch terbatas untuk hal-hal sederhana seperti memeriksa nilai dari sebuah variabel.
Struktur switch tidak bisa digunakan untuk percabangan program dengan operasi yang lebih rumit seperti membandingkan 2 variabel. Kita tidak bisa menggunakan switch untuk membuat kode program menentukan nilai terbesar seperti contoh pada tuturial IF sebelum ini.
Untuk kebanyakan kasus, kita akan sering menggunakan IF dibandingkan switch.
Saya pernah mencoba kondisi switch dengan menghilangkan
break;
namun hasilnya error yang menyatakan kesalah pada code program.pada PHP versi berapa kondisi seperti ini dpt dilakukan?
dulu saya memakai xampp versi 1.7.* dan lupa mengecek versi PHP. tapi sekarang saya memakai PHP 5.3.*
Wah, saya juga kurang tau apa permasalahannya, karena untuk XAMPP 1.7.x versi PHP yang digunakan sudah PHP 5.2.x yang relatif sudah update.
Untuk mengecek versi PHP XAMPP bisa mengunjungi http://code.stephenmorley.org/articles/xampp-version-history-apache-mysql-php/.
dear, writer, .. ..
apakah di sediakan untuk situs duniailkom.com sebuah e book untuk di unduh bebas oleh para pembaca yang membutuhkan yang tidak bisa terkoneksi secara online secara terus menerus, thanks.
Sampai saat ini belum ada, tetapi saya sudah rencanakan untuk membuat ebooknya, semoga berkenan menunggu :)
Sangat ditunggu Mas Andre .. ;)
Terimakasih mas :)
Jangan sampai tutup ini website mas Admin, saya tidak tahu lagi akan belajar dimana tutor web programming berbahasa Indonesia terbaik. Thanks usahanya
Saya akan selalu usahakan situs duniailkom akan tetap hadir mas… :)
Mudah2an kedepannya bisa berkembang menjadi lebih baik lagi…
Anggap saja sedekah ilmu kang…
Hehe.. makasih gan :)
materi-materi yang disampaikan sangat detail , kece parah ini website .. jangan ampe tutup gan terus berkarya demi generasi muda indonesia yang cerdas ilmu komputer/programming .. dan siap menghadapi mea
Amiin… makasih gan, mudah2an pelajar/mahasiswa indonesia makin melek coding dan bisa bersaing dengan negara2 lain di bidang IT :)
Makasih min websitenya sangat berguna banget, kalimat-kalimat yang ditulis mudah dipahami dan mudah dimengerti. Tugas" yang di berikan dosen jadi mudah untuk di selesaikan setelah membaca dan memahami isi website ini. Semoga makin berkembang websitenya "coding everytime".
Amiin.. makasih doanya gan.. saya juga senang materi yang ada bisa bermanfaat. Sukses terus untuk studinya gan… :)
Saya cukup lama membaca tutorial untuk bahasa scripting dari javascript dan php di w3school. Jujur, benar-benar susah memahaminya secara gamblang karena keterbatasan pembahasan / detail disana. Ada contoh yang di berikan namun kebanyakan contoh variablenya adalah $x, jadinya terkadang bingung deh jika pada saat trial error, variablenya lain2.
Duniailkom berhasil membuat saya lebih mudah memahami PHP dengan sangat cepat. Kemarin lagi niat beli ebook PHP uncover, tapi lagi gak ada alat baca (inginnya beli tablet dulu baru beli ebook). Sementara cuma bisa baca dari hape deh,, so far, so good dan semoga sukses selalu ya gan,, artikelnya update terus ya,,
Sejauh ini sudah pelajari sampai switch, semoga bisa segera buat web php canggih lengkap dengan berbagai fungsi yang di butuhkan.
Gan pas yang
<?php
$a=3;
switch ($a)
{
case 0 :
echo "Angka Nol";
break;
case 1 :
echo "Angka Satu";
break;
case 2 :
echo "Angka Dua";
break;
case 3 :
echo "Angka Tiga";
break;
case 4 :
echo "Angka Empat";
break;
case 5 :
echo "Angka Lima";
break;
default :
echo "Angka diluar jangkauan";
break;
}
?>
ini kan hasil nya "angka tiga" gan, tapi kalo saya pengen semua case tampil gimana ya gan , tolong solusi nya gan . teimakasih
Untuk menguji case2 lain, tinggal diganti saja isi variabel $a=3, misalnya jadi $a=5. Kalau agan mau yang interaktif, variabel $a ini bisa diinput dari form. Tp kodenya tentu lebih kompleks.
Biar tampil semua tidak bisa dengan switch () tapi pake if karena dalam switch tidak bisa menggunakan logika, so..untuk menampilkan semua pilihan seperti :
$a=3;
if($a >= 0 && $a <= 5)
{
echo 'Angka antara 1 hingga 5 yaitu : '.$a;
}
else
{
echo "Angka diluar jangkauan";
}
Semoga membantu :V
Terimakasih tambahannya :)
Saya menggunakan switch case untuk isi menu bar, kemudian setelah saya klik salah satu menu tersebut bukan menampilkan halaman isi dari isi menu, malah masuk ke halaman utama atau beranda. Padahal nama dari case nya sudah saya sama kan semua, kemudian "include" untuk menampilkan data juga sudah benar datanya, mungkin ada masukkan dari mastah, mohon dengan sangat.
Bisa disederhanakan dulu kode programnya untuk mencari letak kesalahan. Misalnya g perlu pakai case dulu, tapi coba di test satu persatu apakah linknya sudah sesuai semua ketika di klik (menuju alamat yang benar). Pastikan includenya sudah sesuai.
Setelah link di menu aktif semua, baru pakai case. Atau bisa juga pakai if else sebagai alternatif.
apakah switch itu untuk string aja? atau apakah bisa digunakan untuk perhitungan?
misal penjumlahan, pengurangan, pembagian,dan perkalian.
mohon bantuannya untuk contoh :)
krn selalu muncul spt ini
Parse error: syntax error, unexpected 'Bagi' (T_STRING) in C:\xampp\htdocs\belajar\skrip1.php on line 22
terimakasi mas,,,source kodenya sangat berhuntung selali….good luck.