Pada tutorial kali ini, kita akan mempelajari tentang sesuatu yang
sangat penting: yaitu logika percabangan pada PHP.
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.
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;
if ($lulus) {
echo "Variabel lulus bernilai true <br>";
}
Coba anda ganti variabel $lulus pada Kode 1 di atas menjadi false, lalu
jalankan lagi programnya.
$nilai = 60;
echo "<br>";
$nilai = 60;
echo "<br>";
$nilai = 56;
Coba ubah isi dari variabel $nilai lalu refresh halaman web untuk
memeriksa apakah pengkondisian yang kita buat sudah benar atau
tidak.
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.
if ($nama) {
echo "dianggap true";
} else {
echo "dianggap false";
}
Coba ganti isi dari variabel $nama menjadi nilai string yang lain, lalu lihat
seperti apa hasilnya.
$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";
}
$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>';
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>';
Bagaimana caranya?
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.
Ternary
Ternary adalah cara singkat mendefinisikan logika percabangan. Ia
mirip dengan if else (tanpa elseif).
$nilai = 50;
echo "<br>";
$nilai = 50;
echo $nilai > 70 ? "Selamat, anda lulus!" : "Mohon maaf, anda harus
mengulang";
Bagaimana, lebih singkat kan? Anda hanya perlu tanda ? dan tanda :.
$nilai = 50;
$pesan = $nilai > 70 ? "Selamat, anda lulus!" : "Mohon maaf, anda harus
mengulang";
Menjadi:
<?php
Ketika anda memiliki logika yang cukup rumit. Melibatkan lebih dari
satu variabel atau juga membutuhkan ekspresi logika yang panjang,
maka gunakanlah if.
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.