Sampai sini kita telah belajar tentang php file, variabel dan tipe data, dan macam-macam operator.
Pada tutorial kali ini, kita akan mempelajari tentang sesuatu yang sangat penting: yaitu logika percabangan pada PHP.
Jika anda merasa tutorial ini bermanfaat, anda bisa membagikan seri tutorial belajar PHP dasar ini ke teman-teman anda, rekan kerja, atau ke grup sosial media.
Struktur Kontrol
Kita telah mempelajari beberapa unsur dasar dalam PHP. Kita sudah bisa membuat variabel, memanipulasinya dengan operator, mengetahui tipe datanya, dan juga kita bisa menampilkannya dengan perintah echo
.
Akan tetapi, program yang kita tulis sejauh ini masih sangat sederhana. Semua baris berjalan begitu saja dari atas ke bawah. Nah, bagaimana jika kita akan menampilkan sesuatu berdasarkan kondisi? Seperti misalnya: kita akan menampilkan string
“lulus” jika variabel $nilai
lebih dari 70, dan kita akan menampilkan string
“tidak lulus” jika nilainya di bawah itu?
Itu lah fungsi control structure atau struktur kontrol. Struktur kontrol memungkinkan kita untuk melakukan tindakan di luar alur default pengeksekusian program (yaitu dari atas ke bawah). Dengan menggunakan struktur kontrol, kita bisa mengeksekusi sebagian kode program, dan tidak mengeksekusi sebagian yang lain.
Di dalam PHP, terdapat dua jenis struktur kontrol: yaitu logika percabangan, dan juga blok kode perulangan.
Dalam kesempatan ini kita akan mempelajari dan mempraktikkan logika percabangan pada PHP. Ada pun pada tutorial selanjutnya, kita akan ambil pembahasan tentang perulangan.
Macam-Macam Percabangan Pada PHP
Untuk struktur kontrol percabangan pada PHP, terdapat beberapa macam. Ada if else
, ada switch case
, dan ada ternary
. Dalam tutorial ini kita akan membahas ketiga jenis percabangan tersebut.
Percabangan If
Percabangan if
adalah percabangan yang paling dasar. Tugasnya adalah memeriksa nilai boolean
atau sebuah ekspresi logika.
Jika suatu variabel atau suatu ekspresi logika bernilai true
, maka proses yang ada di dalam blok kode if
akan dijalankan. Jika tidak, maka perintah/kode yang ada di dalam blok if
tidak akan dijalankan.
Contoh:
<?php
$lulus = true;
echo 'Memeriksa variable $lulus <br>';
if ($lulus) {
echo "Variabel lulus bernilai true <br>";
}
Kode 1: contoh sederhana penggunaan if
Coba anda ganti variabel $lulus
pada Kode 1 di atas menjadi false
, lalu jalankan lagi programnya.
Pengecualian menggunakan else
Bagaimana jika ternyata kondisi yang didefinisikan di dalam if
ternyata tidak terpenuhi alias bernilai false
?
Kita bisa menangani hal tersebut dengan membuat blok kode else
. Kita ubah Kode 1 di atas menjadi seperti berikut:
<?php
$nilai = 60;
echo 'Memeriksa variable $nilai <br>';
echo "Nilai: {$nilai} <br>";
if ($nilai >= 70) {
echo "Selamat, siswa !";
} else {
echo "Mohon maaf, siswa tidak lulus";
}
echo "<br>";
Kode 2: contoh sederhana penggunaan if dan else
Membuat lebih dari 1 kondisi dengan elseif
<?php
$nilai = 60;
echo 'Memeriksa variable $nilai <br>';
echo "Nilai: {$nilai} <br>";
if ($nilai >= 85) {
echo "Sangat mengesankan!";
} elseif ($nilai >= 70) {
echo "Selamat anda lulus!";
} else {
echo "Jangan menyerah, anda pasti bisa!";
}
echo "<br>";
Kode 3: contoh penggunaan if, else if dan else
Contoh Menampilkan Nilai Huruf Menggunakan If
Sebagai contoh, kita akan menampilkan peringkat huruf berdasarkan variabel $nilai
. Kondisi yang akan kita gunakan adalah seperti pada Tabel 1.
Rentang Nilai | Peringkat Huruf |
---|---|
85-100 | A |
75-84 | B |
60-74 | C |
50-59 | D |
0-49 | E |
Tabel 1: pengkondisian peringkat huruf
Untuk membuat pengkondisian pada Tabel 1, setidaknya kita membutuhkan 5 buah pengkondisian.
Perlu dipahami, bisa jadi PHP adalah bahasa pemrograman pertama yang anda pelajari, sehingga anda masih beranggapan bahwa menulis kode program adalah proses yang kaku. Bagaimana maksudnya? Yaitu anda beranggapan: untuk membuat seperti ini caranya harus seperti ini, untuk membuat seperti itu, caranya harus seperti itu.
Itu padangan yang salah, karena proses penulisan kode sangat bersifat fleksibel. Tergantung dengan logika masing-masing penulisnya. Karena satu masalah yang sama jika dikerjakan oleh orang yang berbeda, bisa menghasilkan solusi yang berbeda pula.
Di sini saya memberi contoh sederhana bagaimana cara mengimplementasi logika pada tabel 1, dan ini tentu saja bukan satu-satunya cara, anda bisa membuat cara anda sendiri.
Silakan coba dan praktikkan kode program berikut:
<?php
$nilai = 56;
echo "Nilai: {$nilai} <br>";
if ($nilai >= 85 and $nilai <= 100) {
echo "Predikat: A";
} elseif ($nilai >= 75) {
echo "Predikat: B";
} elseif ($nilai >= 60) {
echo "Predikat: C";
} elseif ($nilai >= 50) {
echo "Predikat: D";
} elseif ($nilai >= 0) {
echo "Predikat: E";
} else {
echo "Nilai tidak valid.";
}
echo "<br>"; # untuk membuat baris baru pada HTML
Kode 4: implementasi pengkondisian peringkat huruf dari table 1
Coba ubah isi dari variabel $nilai
lalu refresh halaman web untuk memeriksa apakah pengkondisian yang kita buat sudah benar atau tidak.
Hal-Hal yang dianggap true atau false
Ada beberapa hal di dalam bahasa pemrograman PHP yang dianggap true
padahal ia bukan tipe data boolean
, dan juga ada beberapa hal yang dianggap false
padahal ia bukan tipe data boolean
.
Apa saja? Berikut ini adalah beberapa di antaranya:
Bilangan numeric selain 0 dianggap true
Semua bilangan numeric selain 0
, maka dianggap true
. Ada pun variabel integer
mau pun float
dengan nilai 0
, maka ia dianggap false jika kita masukkan dalam kondisi if
.
<?php
$nilai = 0;
if ($nilai) {
echo "nilai: {$nilai} dianggap true";
} else {
echo "nilai: {$nilai} dianggap false";
}
Kode 5: numeric bernilai 0 dianggap false dan selain itu maka dianggap true
Anda bisa mengganti isi dari variabel $nilai
menjadi angka negatif mau pun positif dan lihat seperti apa hasilnya.
String yang tidak kosong dianggap true
String kosong juga dianggap akan dianggap false, dan string yang tidak kosong akan dianggap true.
Anda bisa mencoba kode program pada Kode 5 di bawah ini:
<?php
$nama = "";
if ($nama) {
echo "dianggap true";
} else {
echo "dianggap false";
}
Kode 5: string kosong dianggap false
Coba ganti isi dari variabel $nama
menjadi nilai string yang lain, lalu lihat seperti apa hasilnya.
Nilai null dianggap false
Selain itu, nilai null
juga dianggap false
dalam PHP.
<?php
$nilai = null;
if ($nilai) {
echo "dianggap true";
} else {
echo "dianggap false";
}
if (@$namaLengkap) {
echo "Jika variabel namaLengkap telah didefinisikan sebelumnya dan ia bukan 0 atau string kosong atau null";
} else {
echo "Jika variabel namaLengkap tidak pernah didefinisikan sebelumnya. Tanda @ membuatnya bernilai NULL jika belum didefinisikan sebelumnya";
}
Kode 6: nilai null dianggap false
Anda bisa memperhatikan dalam contoh Kode 6 di atas, terdapat tanda @
sebelum variabel $namaLengkap
. Tanda @
tersebut berfungsi untuk memberi nilai null
terhadap suatu variabel yang tidak pernah didefinisikan sebelumnya.
Ini membuat program kita tidak error, karena menampilkan atau menggunakan sebuah variabel yang sebelumnya tidak pernah didefinisikan akan menyebabkan error.
Percabangan Switch Case
Percabangan yang kedua adalah switch .. case
. Ini adalah alternatif yang bisa kita gunakan untuk memecahkan permasalahan logika dalam PHP.
Akan tetapi, penggunaan switch .. case
ditujukan untuk kasus-kasus yang lebih sederhana dari pada if .. else
.
Perhatikan Kode 7 berikut ini lalu praktikkan.
<?php
$url = '/about';
switch ($url) {
case '/':
echo 'Selamat datang di dashboard.';
break;
case '/about':
echo 'Selamat datang di halaman about.';
break;
case '/contact':
echo 'Selamat datang di halaman kontak.';
break;
default:
echo 'Maaf halaman yang anda cari tidak ditemukan.';
}
echo '<br>';
Kode 7: contoh sederhana switch case
Silakan anda ubah nilai dari variable $url
pada Kode 7 di atas, lalu refresh halaman web. Dan lihat apakah percabangan kita dengan switch case
telah berfungsi dengan benar atau tidak.
Jika tanpa Break
Dalam blok kode switch .. case
, kita harus menggunakan statement break
. Karena kalau tidak, setelah sistem berhasil menemukan case
yang bernilai true
, dia akan tetap mengeksekusi case
yang dibawahnya meskipun kondisinya sudah tidak sesuai lagi.
Coba hapus setiap perintah break
pada Kode 7 hingga menjadi seperti pada Kode 8 berikut:
<?php
$url = '/about';
switch ($url) {
case '/':
echo 'Selamat datang di dashboard.';
case '/about':
echo 'Selamat datang di halaman about.';
case '/contact':
echo 'Selamat datang di halaman kontak.';
default:
echo 'Maaf halaman yang anda cari tidak ditemukan.';
}
echo '<br>';
Kode 8: menghapus statement break
pada switch .. case
Jalankan halaman web, lalu perhatikan apa yang terjadi.
Contoh Menampilkan Nilai Huruf Menggunakan Switch Case
Kita telah memiliki kondisi peringkat nilai huruf pada Tabel 1 di atas. Kita juga telah menyelesaikannya menggunakan if else
.
Sekarang, kita ingin mencoba mengimplementasikan tabel logika tersebut dengan menggunakan switch ... case
.
Bagaimana caranya?
Jawabannya adalah: tidak bisa.
Serius?
Ya!
Karena switch ... case
hanya menerima satu variabel saja, dan ia hanya mengeksekusi setiap case
dengan nilai yang sesuai.
Dan kita tidak bisa membuat case
dengan sebuah ekspresi logika.
Sehingga untuk menerapkan logika pengkondisian pada Tabel 1, kita harus menggunakan if ... else
.
Ternary
Ternary adalah cara singkat mendefinisikan logika percabangan. Ia mirip dengan if else
(tanpa elseif
).
Dan ternary didefinisikan hanya dalam satu baris saja.
Misal kita punya blok if else
seperti ini:
<?php
$nilai = 50;
if ($nilai > 70) {
echo "Selamat, anda lulus!";
} else {
echo "Mohon maaf, anda harus mengulang";
}
echo "<br>";
Kode 9: contoh if else
Maka anda bisa mengubahnya seperti ini:
<?php
$nilai = 50;
echo $nilai > 70 ? "Selamat, anda lulus!" : "Mohon maaf, anda harus mengulang";
Kode 10: contoh sederhana penggunaan ternary
Bagaimana, lebih singkat kan? Anda hanya perlu tanda ?
dan tanda :
.
Anda juga bisa menggunakannya untuk mengisi sebuah nilai ke dalam variabel seperti pada Kode 10 berikut:
<?php
$nilai = 50;
$pesan = $nilai > 70 ? "Selamat, anda lulus!" : "Mohon maaf, anda harus mengulang";
Kode 10: contoh sederhana penggunaan ternary untuk pengisian variabel
Null Colleasing Operator
Operator null colleasing didefinisikan dengan simbol ??
dan ?:
. Ia adalah operator yang digunakan untuk memeriksa antar dua operan: jika operan pertama tidak null atau tidak dianggap false, maka ia akan dipilih. Jika tidak, maka operan ke dua yang akan dipilih.
Intinya, dengan operator ini, anda bisa menyingkat statement tenary
berikut:
<?php
echo @$namaPeserta ? $namaPeserta : "Nama tidak diisi";
Menjadi:
<?php
echo @$namaPeserta ?: "Nama tidak diisi";
Lebih singkat bukan?
Kapan harus menggunakan if, switch case, atau ternary?
Kapan harus menggunakan if?
Ketika anda memiliki logika yang cukup rumit. Melibatkan lebih dari satu variabel atau juga membutuhkan ekspresi logika yang panjang, maka gunakanlah if.
Kapan harus menggunakan ternary?
Ketika anda memiliki blok if sederhana yang hanya terdiri dari
if
danelse
saja, anda bisa menggunakan ternary untuk mengubah kode anda menjadi lebih singkat.
Kapan harus menggunakan switch .. case
?
Sejujurnya saya pribadi sangat jarang sekali menggunakan switch case. Anda bisa menggunakan switch case jika cabang pengkondisian anda hanya melibatkan satu variabel saja dan tidak mengandung operator logika semisal lebih dari (
>
) atau kurang dari (<
) dan sebagainya.
Kesimpulan
Struktur kontrol memungkinkan kita untuk melakukan tindakan di luar alur default pengeksekusian program: yaitu dari atas ke bawah. Dengan menggunakan struktur kontrol, kita bisa mengeksekusi sebagian kode program, dan tidak mengeksekusi sebagian yang lain.
Di dalam PHP, terdapat dua jenis struktur kontrol: yaitu logika percabangan, dan juga blok kode perulangan.
Untuk logika percabangan, terdapat dua jenis utama: yaitu if .. else
dan switch .. case
. Juga ada alternatif lain seperti ternary dan null colleasing operator yang kesemuanya telah kita dalam artikel ini.
Pembahasan Selanjutnya
Pada tutorial selanjutnya, kita masih berada dalam pembahasan struktur kontrol pada PHP. Dan yang akan kita bahas adalah: Struktur Kontrol Blok Perulangan.
Jangan lupa share tutorial ini, ya!
Terima kasih banyak.