Tutorial PHP Dasar
Match Expression
Materi ini memiliki 1 buah lampiran. Namun Anda tidak dapat mengakses lampiran karena belum terdaftar di kursus ini. Klik disini untuk mendaftar.
Pada video ini kita akan membicarakan mengenai Match Expression, yaitu sintaks untuk percabangan yang baru diperkenalkan pada PHP 8. Sebelumnya kita sudah pernah membahas mengenai percabangan dengan menggunakan If dan Switch. Sekarang ada sintaks percabangan baru Match Expression, yang bisa kita gunakan untuk mempersingkat percabangan yang tadinya harus menggunakan switch.
Ini adalah contoh kodenya. Di sebelah kiri, kita membuat percabangan dengan menggunakan kata kunci switch. Percabangan ini bisa kita sederhanakan menjadi kode di sebelah kanan dengan menggunakan kata kunci match. Namun ada beberapa hal yang perlu kita perhatikan.
Yang pertama, match langsung mengembalikan nilai. Jadi cara penggunaannya mirip dengan ternary operator. Kalau kita perhatikan di sebelah kiri, pada saat nilai $grade memenuhi syarat case ‘A’, maka PHP menjalankan statement echo ‘Excelent’. Kita bandingkan ke kode sebelah kanan. Pada saat nilai $grade memenuhi syarat ‘A’, maka match mengembalikan nilai ‘Excelent’. Pertanyaan berikutnya, nilai yang dikembalikan ini mau diapakan? Kalau mau langsung ditampilkan di layar, maka kita bisa gunakan perintah echo. Maka kita tambahkan perintah echo di depan match.
Yang kedua, pada sintaks switch, kode di setiap percabangan harus kita pisahkan dengan kata kunci break. Kalau misalkan kode pada case ‘A’ tidak kita beri break, maka pada saat menjalankannya nanti PHP akan lolos ke statement pada case ‘B’. Pada match expression tidak bisa seperti itu. Jadi kalau misalkan nilai $grade adalah ‘A’, maka match langsung mengembalikan nilai ‘Excellent’, setelah itu semua perintah yang berada di bawahnya sudah tidak dijalankan lagi.
Sedangkan yang perlu kita perhatikan yang ketiga adalah pada perintah switch, kita menggunakan operator perbandingan sama dengan (==). Sedangkan pada perintah match, kita membandingkan menggunakan operator identik (===). Artinya tipe data pada match harus sama persis. Berbeda dari switch yang masih bisa membandingkan antara string dan integer.
Kita langsung praktek ya. Di layar, sudah ada kode untuk memberitahukan keterangan dari nilai kuliah. Ada 5 buah nilai yaitu A, B, C, D, E. Misalkan pada nilai ‘A’ kita beri cetak keterangan Excellent, ‘B’ artinya ‘Good’ atau bagus, dan seterusnya. Diluar dari kelima nilai ini, kita cetak keterangan ‘Error’. Kalau kita jalankan, maka kita mendapatkan pesan Excellent, karena nilai $grade saat ini adalah ‘A’. Selanjutnya kita akan menyederhanakan kode ini dengan menggunakan Match Expression.
Pertama kita perhatikan dahulu ya, tujuan dari percabangan switch ini. Semuanya bertujuan untuk mencetak keterangan. Di setiap case-nya, ada perintah echo. Jadi yang pertama kali kita lakukan adalah perintah echo ini kita taruh langsung di luar match. Setelah itu barulah kita gunakan kata kunci match, diikuti oleh tanda kurung dan nama variable yang menjadi kondisi, yaitu $grade. Kemudian kita buat tanda kurung kurawal.
Di dalam tanda kurung kurawal, pertama kita buat dahulu nilai kondisi, misalkan ‘A’, diikuti oleh tanda panah, lalu diikuti oleh nilai yang dikembalikan yaitu “Excellent\n”. Beri tanda koma. Kita lanjutkan ‘B’ => ‘Good\n”. Lalu ‘C’ => “Satisfactory\n” (Cukup). ‘D’ => “Minimum Passing\n” (D berarti lulus pas-pasan). Dan ‘E’ => “Failure\n” (dan E berarti gagal). Terakhir kita tambahkan kata kunci default untuk semua huruf lain yang belum pernah kita sebutkan, kembalikan nilai “Error\n”. Setelah tutup kurung kurawal harus diakhiri oleh tanda titik koma.
Kalau kita coba jalankan, maka kita mendapatkan hasil yang sama sebanyak 2 kali ya. Yang pertama adalah dari perintah Switch. Dan yang kedua adalah dari perintah Match. Tujuan dari kedua kode adalah sama, namun perintah Match lebih sederhana.
Ada beberapa hal yang perlu diperhatikan disini. Yang pertama, pada perintah Switch, setiap case harus ditutup dengan kata kunci break. Kalau misalkan pada case ‘A’, kita hapus break. Kita coba jalankan. Maka kita mendapatkan tulisan “Excelent” dan “Good”. Artinya dari case ‘A’, kode yang dijalankan bablas ke case ‘B’. PHP tetap menuliskan “Good”. Dan melanjutkan hingga ketemu break, barulah keluar dari percabangan. Sedangkan pada match, kita tidak menggunakan break. Sehingga begitu ketemu $grade adalah ‘A’, maka match langsung mengembalikan nilai “Excellent”, dan semua kode lain dari percabangan sudah tidak dijalankan lagi.
Contoh yang kedua, pada switch kita bisa memberikan instruksi yang sama untuk beberapa nilai yang berbeda. Misalkan untuk nilai A, B, dan C kita beri keterangan lulus. Maka kodenya kita ganti menjadi:
case 'A' : case 'B' : case 'C' : echo "Pass\n"; break;
Nah, pada perintah match, kita juga bisa membuat kasus seperti ini. Caranya adalah pada nilai ‘A’, kita tambahkan koma dan diikuti oleh nilai lain yang cocok, yaitu ‘B’. Lalu tambah koma lagi dan ‘C’. Nilai kembaliannya kita ganti menjadi “Pass\n” dan kita hapus cabang ‘B’ dan ‘C’.
Kita coba ya. Pada saat nilai ‘A’ kita mendapatkan hasil ‘Pass’. Begitu juga untuk nilai ‘B’ dan ‘C’. Nilai ‘E’ menghasilkan ‘Failure’.
Kemudian yang perlu kita perhatikan juga adalah pada perintah match, PHP melakukan perbandingan secara identik. Artinya tipe datanya harus sama persis. Kita coba ganti case-nya menjadi angka 1, baik pada Switch maupun Match. Pertama kita coba dahulu $grade angka 1. Kedua perintah memberikan hasil “Pass”.
Selanjutnya kita ganti $grade menjadi string ‘1’. Perhatikan bahwa pada Switch, string ‘1’ dianggap sama dengan angka 1, sehingga kita mendapatkan hasil ‘Pass’. Sedangkan pada Match, string ‘1’ dianggap tidak sama dengan angka 1, sehingga kita mendapatkan hasil ‘Error’.
Ada satu lagi kelebihan dari perintah Match apabila kita bandingkan dengan Switch. Pada perintah Switch, kita hanya bisa melakukan perbandingan sama dengan untuk setiap kasusnya. Pada perintah Match, kita bisa menggunakan operator perbandingan lainnya seperti lebih besar ataupun lebih kecil. Contoh kasusnya, kita ingin memberikan keterangan pada nilai yang berupa angka dari 0 hingga 100. Nilai 90 hingga 100 adalah A. Nilai 80 hingga 89 adalah B, dan seterusnya.
Kalau kita menggunakan perintah switch, maka kita mesti mengetikkan satu per satu nih, case dengan nilai A. Mulai dari 90, 91, 92 dan seterusnya. Bahkan kalau kita mau menyelesaikan masalah ini dengan menggunakan Switch, maka kita harus menuliskan satu per satu seluruh case-nya mulai dari 0 hingga 100. Tentunya kita perlu cara yang lebih mudah ya.
Untungnya sekarang masalah seperti ini bisa kita pecahkan dengan menggunakan Match. Caranya? Di dalam kurung match, kalau tadinya kita masukkan variable $grade, sekarang diganti menjadi nilai true. Kemudian kita bisa menggunakan operator perbandingan lain sebagai kondisi kasusnya. Apabila kondisi menghasilkan nilai true, artinya match dengan nilai true yang menjadi argument, dan PHP mengembalikan nilai yang berada di sampingnya. Sebagai contoh disini nilai $grade adalah 90. Pertama PHP membandingkan dahulu apakah 90 >= 90? Hasilnya true. Maka PHP mengembalikan nilai ‘A’.
Kita coba praktek ya. Disini saya sudah menuliskan kode untuk contoh kasus pada slide tadi. Kita coba jalankan, maka kita mendapatkan hasil ‘A’. Nilai $grade adalah 90. Pertama PHP membandingkan dahulu apakah 90 >= 90, ternyata hasilnya adalah true, sehingga match dengan nilai true yang menjadi argument. Maka PHP langsung mengembalikan nilai ‘A’. Perhatikan sebenarnya nilai grade masih memenuhi kondisi berikutnya. 90 >= 80 hasilnya adalah true. Namun berhubung match langsung mengembalikan hasil pertamanya saja, maka kode kita tidak bablas sampai ke BCDE.
Kalau kita coba ganti nilai $grade ke 75. Maka kita mendapatkan hasil C. Kondisi pertama 75 >= 90 adalah false. Kondisi kedua 75 >= 80 juga false. Dan kemudian kondisi ketiga 75 >= 70 adalah true, sehingga PHP mengembalikan nilai ‘C’.
Kalau kita coba nilai 50 maka kita mendapatkan ‘E’. Dan coba lagi nilai 0 hasilnya ‘E’. Kalau kita coba nilai -1 maka hasilnya ‘Error’.
Sekilas program kita sudah berhasil menyelesaikan masalah ya. Namun kalau diperhatikan lagi, kita masih bisa memasukkan angka diatas 100, dan mendapatkan nilai ‘A’. Padahal kalau di soal, nilai paling tinggi hanya sampai 100. Kode kita yang sekarang 101 mendapatkan nilai ‘A’.
Sebenarnya ini masih salah. Kalau kita hendak memperbaikinya, maka kita tambahkan lagi kondisi di paling atas. Bila nilai $grade > 100 maka hasilnya adalah ‘Error’. Dan sekarang kode kita baru bisa memecahkan masalah dengan benar.
Dengan menggunakan fasilitas tanya jawab, maka Anda bisa bertanya dan akan dijawab langsung oleh instruktur kursus.
Anda belum terdaftar pada kursus ini sehingga tidak bisa mengajukan pertanyaan.