Percabangan if

Selain operator matematis, pada PHP kita juga mengenal operator pembanding. Operator pembanding ini berfungsi untuk membandingkan sebuah nilai dan variabel dengan nilai dan variabel lainnya. Adapun yang termasuk dalam operator pembanding yang paling sering digunakan adalah

untuk memahami penggunaan operator di atas dapat kita lihat pada Latihan berikut

Latihan

  1. Buka text editor dan tuliskan kode berikut<HTML>

<BODY>

<?php

$nilai = 73.33;

if ($nilai == 100) {

echo “anda mendapatkan nilai sempurna”;

} else {

echo “anda tidak mendapatkan nilai sempurna”;

}

?>

</BODY

</HTML>

  1. simpan dengan nama opban.php pada /var/www atau root directori dari web server.
  2. panggil halaman tersebut dari browser dengan alamat http://localhost/opban.php

Pada contoh di atas terlihat bahwa jika kita memiliki nilai dari variabel $score adalah 100 maka outputnya adalah anda mendapatkan nilai sempurna. Oleh karena $score berisi nilai 73.33, maka output yang ditampilkan adalah anda tidak memiliki nilai sempurna. Namun, disini sering terjadi kesalahan dalam mengetikkan == menjadi =. Sehingga kode kita menjadi seperti berikut ini

<?php

$nilai = 73.33;

if ($nilai = 100) {

echo “anda mendapatkan nilai sempurna”;

} else {

echo “anda tidak mendapatkan nilai sempurna”;

}

?>

Kode diatas kalau dijalankan akan selalu menghasilkan anda mendapatkan nilai sempurna. Karena arti dari perintah if ($nilai = 100) adalah jika kita dapat memasukkan nilai 100 ke dalam variabel $nilai maka lakukan perintah yang berada di dalam if.

Sebuah operator pembanding akan selalu menghasilkan nilai benar (true atau 1) atau salah (false atau 0). Berikut adalah contoh kode PHP yang berfungsi menampilkan nilai benar atau salah dari sebuah operator pembanding.

<?php

// define variables

$a = 10;

$b = 11;

$c = 11.3;

$d = 11;

// cek apakah $b lebih besar dari pada $a

echo ($b > $a) . ‘<br/>’; // benar atau true

// cek apakah $b lebih kecil dari pada $a

echo ($b < $a) . ‘<br/>’; // salah atau false

// cek apakah $b lebih besar atau sama dengan $d

echo ($b >= $d) . ‘<br/>’; // benar atau true

// cek apakah $c lebih kecil atau sama dengan $d

echo ($r <= $s) . ‘<br/>’; // salah atau false

// cek apakah $b sama dengan $d

echo ($b == $d) . ‘<br/>’; // benar atau true

// cek apakah $b sama dengan $c

echo ($b == $c) . ‘<br/>’; // salah atau false

?>

maka dari contoh di atas dapat kita lihat bahwa hampir semua operator pembanding kita gunakan, dan output yang dihasilkan akan selalu bernilai true or false.

Tapi kalau kita melihat dari tampilan yang dihasilkan seperti pada gambar 4.x berikut ini

maka yang terlihat cuma angka satu atau jika sebuah ekspresi bernilai benar, namun jika bernilai salah atau 0 maka tidak ditampilkan.

Bagaimana jika sebuah variabel bertipe integer kita bandingkan dengan sebuah string, untuk menjelaskan hal ini dapat kita lihat pada contoh berikut.

<?php

$nilai = 73.33;

if ($nilai == ‘n/a’) {

echo “nilai anda tidak dapat dipakai”;

} else {

echo “nilai anda valid”;

}

?>

untuk perbandingan di atas karena 73.33 adalah tidak sama dengan n/a maka tampilannya adalah sebagai berikut :

namun, jika $nilai diisi dengan 0, maka yang terjadi adalah

bagaimana hal ini dapat terjadi? Mengapa sebuah angka 0 dianggap sama dengan sebuah string n/a? Ini disebabkan karena jika kita membandingkan sebuah string dengan integer, maka string akan dirubah menjadi 0. untuk mencegah hal ini, maka gunakan operator === sehingga kodenya menjadi seperti berikut :

<?php

$nilai = 0;

if ($nilai === ‘n/a’) {

echo “nilai anda tidak dapat dipakai”;

} else {

echo “nilai anda valid”;

}

?>

hasil yang ditampilkan oleh program PHP di atas adalah sama seperti tampilan yang pertama yang berarti bahwa 0 tidak sama dengan n/a. Karena fungsi operator === selain mencocokkan nilai dari sebuah variabel juga mencocokkan tipe datanya.

Operator lainnya yang mungkin kita pakai untuk sebuah ekspresi di dalam argumen fungsi if adalah operator and (&&) dan or (||). untuk penggunaan operator and dan or dapat kita lihat pada contoh berikut

<?php

$nilai = 0;

if ($nilai < 0 || $nilai > 100) {

echo “nilai anda tidak valid”;

} else {

echo “nilai anda valid”;

}

if ($nilai => 0 && $nilai <= 100) {

echo “nilai anda valid”;

} else {

echo “nilai anda tidak valid”;

}

?>

operator and dan or disebut juga sebagai operator logika, tabel kebenaran untuk operator logika dapat kita lihat pada tabel berikut

Percabangan if elseif else

Selain penggunaan seperti di atas if dapat juga digunakan dengan cara membandingkan beberapa kondisi sekaligus dengan menggunakan format sebagai berikut

if (kondisi satu){

eksekusi blok ini;

} elseif (kondisi dua){

eksekusi blok ini;

}else{

eksekusi blok ini;

}

untuk lebih jelasnya penggunaan percabangan ini dapat kita lihat pada contoh berikut

if ($kehadiran==14 && $nilai==100){

echo “kamu mendapatkan nilai A”;

} elseif ($kehadiran==14 && $nilai<100){

echo “kamu mendapatkan bonus nilai 10”;

}else{

echo “kamu tidak mendapatkan bonus nilai dan belum tentu dapat A”;

}

dari kode tersebut dapat kita simpulkan bahwa sebuah if dapat menguji beberapa kondisi sekaligus. Sehingga output yang dihasilkan sangat tergantung kepada nilai dari kedua variabel tersebut.

Contoh lainnya adalah

if ($nilai_akhir > 90) echo “Kamu mendapatkan nilai A”;

elseif ($ nilai_akhir > 80) echo “Kamu mendapatkan nilai B”;

elseif ($ nilai_akhir > 60) echo “Kamu mendapatkan nilai C”;

elseif ($ nilai_akhir > 50) echo “Kamu mendapatkan nilai D”;

else echo “kamu gagal”;

Percabangan if Bersarang

Pengertian dari istilah if bersarang atau dalam bahasa inggris disebut sebagai nested if adalah adanya percabangan if lain di dalam sebuah percabangan if. Sekarang kita bisa melihat contoh penggunaannya untuk menentukan zodiak seseorang dari tanggal lahirnya.

Terlebih dahulu kita akan menentukan bulan kelahiran, apakah bulan kelahirannya berada dalam zodiak tersebut atau tidak. Jika iya maka kita malakukan pengujian terhadap tanggal lahirnya. Untuk dapat lebih jelas penggunaan if bersarang dapat kita lihat pada contoh berikut.

$bulan = 6;

$tanggal = 18;

if ($bulan = = 5){

if($tanggal >=22 && $tanggal <= 31){

echo “zodiak anda adalah gemini”;

} else {

echo “zodiak anda adalah aries”;

}

}elseif ($bulan = = 6 ){

if($tanggal <= 21){

echo “zodiak anda adalah gemini”;

} else {

echo “zodiak anda adalah leo”;

}

}

else {

echo “zodiak anda bukan aries, gemini, ataupun leo”

}

Percabangan Switch

Penggunaan switch pada dasarnya adalah sama seperti penggunaan if… elseif… else. Kelebihan dari pengguna fungsi switch adalah lebih pendek dan lebih mudah dimengerti dan dibaca karena tidak perlu menggunakan tanda kurung kurawal yang sangat banyak.

Kalau kita kembali ke contoh nilai di atas dan kita menggunakan percabangan switch untuk menggantikan if..elseif..else maka kodenya akan seperti berikut

switch($nilai){

case $nilai>90:

echo (“Kamu mendapatkan nilai A.”);

break;

case $nilai>80:

echo (” Kamu mendapatkan nilai B.”);

break;

case $nilai>60:

echo (” Kamu mendapatkan nilai C.”);

break;

case $nilai>50:

echo (” Kamu mendapatkan nilai D.”);

break;

default:

echo (“kamu gagal”);

}

kalau dari segi jumlah baris yang digunakan, mungkin if..elseif..else dan switch tidaklah terlalu berbeda, tapi pada switch kita sudah mengganti penggunaan if dan elseif hanya dengan case yang diikuti dengan sebuah kondisi. Setiap case akan mengeksekusi kode yang berbeda-beda.

Selain penggunaan case, mungkin kita juga dapat melihat adanya penggunaan fungsi break pada kode di atas. Ketika PHP membaca break, maka PHP akan berhenti dan keluar dari perintah switch serta melaksanakan perintah berikutnya. Sehingga case lain yang berada dalam switch ini tidak akan diperiksa sama sekali.

Kelebihan lainnya dari switch adalah untuk memperpendek perbandingan, sehingga kita tak perlu lagi menggunakan operator perbandingan. Hal ini dapat kita lihat pada contoh di bawah ini

switch($provinsi){

case “sumbar”:

echo (“Sumatera Barat”);

break;

case “sumut”:

echo (“Sumatera Utara”);

break;

case “sumsel”:

echo (“Sumatera Selatan”);

break;

case “NAD”:

echo (“Provinsi Nanggroe Aceh Darussalam”);

break;

default:

echo (“Provinsi tidak terdaftar”);

}

Dapat kita simpulkan bahwa jika sebuah nilai dimasukkan di depan sebuah case, maka case akan melakukan pengecekan terhadap kesamaan nilai variabel yang menjadi argumen switch dengan nilai tersebut, baik itu berupa angka maupun berupa teks. Satu lagi yang penting untuk diingat bahwa penggunaan titik dua (colon) setelah case bukan titik koma (semi-colon).

Latihan

1. Buka text editor dan tuliskan kode berikut

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”

“DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml&#8221; xml:lang=”en” lang=”en”>

<head>

<title>Penentuan Kelompok</title>

</head>

<body>

<h2>Penentuan Kelompok</h2>

<?php

// jika form belum disubmit

// tampilkan form

if (!isset($_POST[‘submit’])) {

?>

<form method=”post” action=”percabangan.php”>

Masukkan usia anda: <br />

<input type=”text” name=”umur” size=”3″ />

<p>

<input type=”submit” name=”submit” value=”Submit” />

</form>

<?php

// jika form sudah disubmit

// lakukan proses terhadap input

} else {

// ambil umur dari input use

$umur = $_POST[‘umut’];

// masukkan ke dalam salah satu kelompok

// berdasarkan umurnya

if ($umur <= 10) {

echo “Kamu berada dikelompok anak-anak”;

} elseif ($umur > 10 && $age <= 15) {

echo “kamu berada dalam kelompok remaja”;

} elseif ($age > 15 && $age <= 20) {

echo “Kamu akan masuk ke kelompok dewasa”;

} else{

echo “Kamu sudah terlalu tua untu k ikut aacara ini”;

}

}

?>

</body>

</html>

2. simpan dengan nama percabangan.php pada /var/www atau root directori dari web server.

3. panggil halaman tersebut dari browser dengan alamat http://localhost/percabangan.php

maka tampilannya adalah sebagai berikut ketika pertama kali kita buka dan akan menampilkan output yang berbeda sesuai dengan umur yang kita masukkan.