Struktur if else pada PHP

Terdapat dua cara melakukan percabangan di dalam PHP. Yaitu dengan percabangan if-else dan percabangan switch.

Sebelum membahas lebih lanjut mengenai percabangan, kita harus membahas operator pembanding dan operator logika:

Operator pembanding pada PHP

Operator pembanding berguna untuk membandingkan dua pernyataan. Pernyataan dapat berupa literal, variabel, konstanta ataupun fungsi.

Contoh Nama Keterangan
$a == $b Sama dengan TRUE bila $a sama dengan $b meskipun beda tipe data
$a === $b Identik dengan TRUE bila isi dan tipe data $a dan $b sama
$a != $b Tidak sama dengan TRUE bila $a tidak sama dengan $b
$a <> $b Tidak sama dengan TRUE bila $a tidak sama dengan $b
$a !== $b Tidak identik dengan TRUE bila $a dan $b tidak identik (isi dan tipe sama)
$a < $b Lebih kecil dari TRUE bila $a lebih kecil dari $b
$a > $b Lebih besar dari TRUE bila $a lebih besar dari $b
$a <= $b Lebih kecil sama dengan TRUE bila $a lebih kecil atau sama dengan $b
$a >= $b Lebih besar sama dengan TRUE bila $a lebih besar atau sama dengan $b
$a <=> $b Spaceship (PHP 7) -1, 0, atau 1 bila $a lebih kecil, sama dengan, atau lebih besar dari $b
$a ?? $b ?? $c Null Coalesce / penggabungan null (PHP 7) Salah satu dari $a, $b atau $c yang tidak NULL. NULL bila semua bernilai NULL

Untuk lebih jelasnya mengenai operator "sama dengan" dan operator "identik dengan", dapat melihat contoh berikut:

$a = 23;
$b = "23";
$contoh1 = ($a == $b);
$contoh2 = ($a === $b);
$contoh3 = ($a != $b);
$contoh4 = ($a !== $b);
echo "<pre>";
var_dump($a, $b, $contoh1, $contoh2, $contoh3, $contoh4);
echo "</pre>";

Output:

int(23)
string(2) "23"
bool(true)
bool(false)
bool(false)
bool(true)

Operator Logika pada PHP

Operator logika berfungsi menggabungkan dua kondisi (true atau false) menjadi kondisi yang baru.

Contoh Nama Keterangan
$a and $b Dan TRUE bila $a dan $b dua-duanya benar
$a && $b Dan TRUE bila $a dan $b dua-duanya benar
$a or $b Atau TRUE bila $a atau $b salah satu benar
$a || $b Atau TRUE bila $a atau $b salah satu benar
$a xor $b Xor TRUE bila $a berbeda dengan $b
!$a Not TRUE bila $a FALSE, FALSE bila $a TRUE

Struktur if-else pada PHP

Percabangan if-else adalah percabangan yang paling banyak dipakai. Struktur percabangan if-else adalah sebagai berikut:

<?php
if (kondisi1) {
  //Kode untuk kondisi 1
} else if (kondisi2) {
  //Kode untuk kondisi 2
} else {
  //Kode bila semua kondisi lain bernilai false
}
?>

Kode di atas terbagi menjadi tiga bagian. Yaitu bagian if (kondisi1) { ... }, bagian else if (kondisi2) { ... }, dan bagian else { ... }. Bagian else if dan bagian else bersifat opsional, bisa disertakan, bisa juga tidak. Berikut contoh penggunaan struktur if sederhana:

<?php
if (isset($_POST['login'])) {
  echo "<pre><b>Data yang dikirim:</b> \n".print_r($_POST, true)."</pre><hr />";  
  echo "Anda telah menekan tombol Login <hr />";
}
?><!doctype html>
<html>
  <head><title>Coba IF-ELSE</title></head>
  <body>
    <form method="POST" action="">
      <table>
        <tr>
          <td>Username</td>
          <td><input type="text" name="username" /></td>
        </tr>
        <tr>
          <td>Password</td>
          <td><input type="password" name="password" /></td>
        </tr>
        <tr>
          <td colspan="2"><button name="login">Login</button></td>
        </tr>
      </table>
    </form>
  </body>
</html>

Mulai dari <!doctype html> sampai habis, adalah script HTML untuk menampilkan form. Ketika diklik, form tersebut akan mengirimkan data form ke alamat yang dituju di dalam atribut action. Berhubung atribut action kosong, maka data dikirim ke alamat yang sama dengan alamat halaman yang sedang tampil.

Saat data dikirim ke script ini, script ini diparse ulang dari awal. Mulai dari bagian atas.

Pada script di atas, baris 2 sampai 5 adalah contoh if sederhana. Berikut adalah penjelasan baris per baris:

  • Baris 2: Jika ada kiriman data dengan nama "login", lakukan yang di dalam kurung kurawal.
    • isset($a) adalah fungsi yang bernilai TRUE bila variabel $a ada. Dan FALSE bila variabel $a tidak ada.
  • Baris 3: Menampilkan <pre>[data yang dikirim]</pre>. Dibungkus dengan <pre> agar karakter enter menjadi baris baru pada HTML.
  • Baris 4: Hanya menampilkan di layar: "Anda telah menekan tombol login".
  • Baris 5: Akhir dari kode berkondisi. Disimbolkan dengan kurung kurawal.

Untuk mencoba script ini, jalankan, dan input username dan password ke dalam form, dan tekan tombol login. Akan tampil pesan "Anda telah menekan tombol login".

Berikutnya, coba ganti baris 2 sampai 5 (berikutnya akan disebut baris 2 sampai 7) di atas menjadi:

if (isset($_POST['login'])) {
  echo "<pre><b>Data yang dikirim:</b> \n".print_r($_POST, true)."</pre><hr />";
  echo "Anda telah menekan tombol Login <hr />";
} else {
  echo "Tombol Login belum ditekan <hr/>";
}

Ada tambahan pada baris 5 sampai 7:

  • Baris 5: Akhir dari kondisi "Jika ada kiriman data $_POST bernama login".
    • Else: maksudnya: jika kondisi "Ada kiriman data bernama login" tidak terpenuhi
  • Baris 6: (Jika "Tidak"  "Ada kiriman data $_POST bernama login"), tampilkan tulisan "Tombol login belum ditekan"
  • Baris 7: Akhir dari kondisi "Tidak" "Ada kiriman data $_POST bernama login"

Else adalah kondisi "selain", atau "tidak". Jadi apabila kondisi pada if di atasnya misalnya adalah $total > 20000, maka else dari kondisi tersebut berarti $total <= 20000.

Untuk mencoba script yang telah berubah, coba refresh halaman tersebut. Jika ada peringatan, tekan OK. Akan tampil "Anda TELAH menekan tombol login". Ini karena ketika suatu halaman direfresh, data POST akan dikirimkan sekali lagi. Untuk melihat pesan "Tombol Login BELUM ditekan", klik pada URL dan tekan enter. Atau buka tab baru dan ketikkan alamat script ini.

if-else bersarang pada PHP

Mari kita lagi-lagi mengubah baris 2 sampai 7 script di atas menjadi:

if (isset($_POST['login'])) {
  echo "<pre><b>Data yang dikirim:</b> \n".print_r($_POST, true)."</pre><hr />";  
  if ($_POST['username'] == "fandi" && $_POST['password'] == "ganteng") {
    echo "Login Berhasil <hr />";
  } else {
    echo "Login Gagal <hr />";
  }
} else {
  echo "Tombol Login belum ditekan <hr/>";
}

Di dalam if yang pertama, disisipkan sebuah struktur if lagi. Struktur if di dalam struktur if lain disebut dengan struktur if bersarang.

Pada kode ini hanya akan dijelaskan baris 4. Sisanya dianggap sudah bisa :) . Pada baris 4, disebutkan: $_POST['username'] berisi "fandi", DAN $_POST['password'] berisi "ganteng", maka dilaksanakan baris 5. Jika tidak, dilaksanakan baris 7.

Pada baris 4 itu digunakan penggabungan kondisi dengan operator DAN. Jadi kedua-duanya harus benar, barulah baris 5 dapat terlaksana. Jika tidak, baris 7 yang terlaksana.

if-else bertingkat pada PHP

Istilah / sub judul di atas mungkin salah. Tapi karena bingung mau disebut apa, jadi kita sebut saja seperti itu. Mari kita ganti baris 4 sampai 8 di atas menjadi:

  if ($_POST['username'] == "fandi" && $_POST['password'] == "ganteng") {
    echo "Selamat datang Fandi <hr />";
  } else if ($_POST['username'] == "agus" && $_POST['password'] == "GIS") {
    echo "Selamat datang Agus <hr />";
  } else if ($_POST['username'] == "guest" && $_POST['password'] == "") {
    echo "Selamat datang Guest <hr />";
  } else {
    echo "Login Gagal <hr />";
  }

Rasanya tidak perlu dibahas lebih jauh. Penjelasannya sama dengan dua contoh sebelumnya.

Ternary operator pada PHP

Ternary operator maksudnya adalah operator yang terdiri dari tiga operand. Tidak seperti operasi penjumlahahan atau sejenisnya yang terdiri dari dua operand: $a + $b. Ternary operator memiliki 3 operand: ($a) ? $b : $c. Ternary Operator ini sangat berguna untuk menyatakan kondisi sederhana. Berikut contoh scriptnya:

<?php
if (isset($_POST['beli'])) {
  if (!is_numeric($_POST['harga'])) {
    echo "Harga harus berupa angka";
    die();
  }
  
  echo ($_POST['harga'] > 20000) ? "Mahal" : "Murah";
  echo "<hr />";
}
?><!doctype html>
<html>
  <head><title>Coba Ternary</title></head>
  <body>
    <form method="POST" action="">
      <table>
        <tr>
          <td>Harga</td>
          <td><input type="number" name="harga" /></td>
        </tr>
        <tr>
          <td colspan="2"><button name="beli">BELI!</button></td>
        </tr>
      </table>
    </form>
  </body>
</html>

Pada baris 3 sampai 6, kita memastikan $_POST['harga'] adalah angka. Validasi ini sangat penting untuk input berupa angka. Bila tidak divalidasi, maka input user yang tidak valid akan mengacaukan data dan menyebabkan error pada aplikasi.

Pada baris 9, kita menampilkan suatu teks secara bersyarat dengan ternary operator. Jadi struktur ($a) ? $b : $c, bisa dibilang: ($kondisi) ? $nilaiBenar : $nilaiSalah. Pada contoh di atas: bila $_POST['harga'] lebih dari 20000, tampilkan "Mahal". Selain itu, tampilkan "Murah".

Demikian tutorial percabangan pada PHP. Sebetulnya ada satu jenis percabangan lagi, yaitu switch. Tetapi struktur percabangan ini jarang dipakai. Bila Anda ingin mempelajarinya, bisa coba lihat di: w3schools.