Kodealgo

if else elseif PHP

Konstruk if, else, dan elseif merupakan salah satu fitur penting di banyak bahasa pemrograman, termasuk PHP. Fitur ini memungkinkan kita untuk meminta interpreter mengeksekusi bagian tertentu berdasarkarn syarat atau kondisi tertentu. Fitur ini juga biasa disebut sebagai struktur kontrol atau percabangan.

Misalnya, kita mungkin pernah login ke media sosial dimana kita akan diminta untuk memasukkan email dan kata sandi, jika email dan kata sandi benar maka kita bisa masuk, jika salah kita tidak diizinkan masuk dan akan disuguhkan dengan pesan kesalahan.

Hal tersebut bisa kita lakukan dengan percabangan, kita bisa menangani kondisi tertentu dan melakukan aksi yang spesifik berdasarkan kondisi tersebut, setiap aksi yang kita lakukan dapat berbeda-beda dari satu kondisi dengan kondisi yang lain.

Berikut beberapa topik tentang percabangan if, else, dan elseif yang akan kita bahas:

  1. if
  2. else
  3. elseif
  4. Percabangan Bersarang

if

if cocok digunakan ketika kita hanya memiliki satu kondisi dan satu aksi.

Sintaks

if (kondisi) {
  aksi
}

kondisi adalah ekspresi yang menghasilkan nilai, jika ekspresi bernilai boolean true maka aksi atau statement akan dieksekusi, jika false maka statement tidak akan dieksekusi.

Jika kondisi tidak menghasilkan nilai boolean setelah dievaluasi, mereka akan dikonversi ke nilai boolean yang sesuai atau dilakukan type juggling.

Mari kita lihat contoh berikut:

$nilaiBudi = 90;
$nilaiLulus = 80;

if($nilaiBudi >= $nilaiLulus) {
  echo "Selamat kamu lulus";
}

// OUTPUT: string(18) "Selamat kamu lulus"

Kondisi yang kita gunakan disini adalah ekspresi operasi perbandingan antara $nilaiBudi dan $nilaiLulus, yaitu $nilaiBudi >= $nilaiLulus (apakah $nilaiBudi lebih besar dari atau sama dengan $nilaiLulus), ekspresi ini menghasilkan nilai true karena $nilaiBudi (90) lebih besar dari $nilaiLulus (80).

Karena ekspresi menghasilkan nilai true, maka statement atau kode yang ada diantara kurung kurawal { ... } dievaluasi, dalam hal ini mencetak ucapan selamat "Selamat kamu lulus".

Kita bisa mencoba mengubah $nilaiBudi ke nilai yang lebih kecil dari $nilaiLulus (80), misalnya 75, maka ekspresi akan menghasilkan nilai false dan statement tidak akan dieksekusi.

Bagaimana jika ekspresi tidak menghasilkan nilai boolean? seperti yang sudah kita bahas, ini akan dikonversi ke boolean.

Mari kita coba.

if('') {
  echo "Selamat belajar PHP";
}

Sekarang ekspresinya adalah string kosong bukan nilai boolean, dibelakang layar PHP sebetulnya mengkonversi ekspresi tersebut ke nilai boolean.

Apa hasilnya jika string kosong dikonversi ke boolean? hasilnya adalah false, silakan pelajari type juggling dan type casting untuk mengetahui nilai apa saja yang jika dikonversi ke boolean bernilai true atau false, perilaku ini juga berlaku untuk elseif.

Karena ekspresi bernilai fasle maka statement (echo "Selamat belajar PHP";) tidak dieksekusi, silakan coba ubah string kosong ke string yang berisi karakter, misalnya 'hello', ini akan menghasilkan nilai true dan statement dieksekusi.

Jadi, agar statement dieksekusi, ekspresi harus menghasilkan nilai true, kita dapat menyesuaikan ekspresi tersebut sesuai dengan kondisi yang kita harapkan.

else

else biasanya digabungkan dengan if, seperti yang sudah kita bahas, statement di dalam blok if hanya akan dieksekusi jika ekspresi menghasilkan nilai true, else adalah kebalikannya, statement di dalam else akan dieskekusi jika ekspresi if menghasilkan false.

else bergantung pada if, kita tidak dapat menulis else tanpa if.

Sintaks

if (kondisi) {
  aksiJikaTrue
} else {
  aksiJikaFalse
}

Jika kondisi menghasilkan nilai true maka kode aksiJikaTrue akan dieksekusi, jika false maka kode aksiJikaFalse dieksekusi.

Mari kita lihat contoh berikut.

if (false) {
  echo "Kondisi true";
} else {
  echo "Kondisi false";
}

// OUTPUT: Kondisi false

Contoh diatas akan menghasilkan output "Kondisi false" karena kondisi di dalam if adalah false (if(false)).

elseif

Sama seperti else, elseif juga bergantung pada if, kita tidak dapat menulis elseif tanpa didahului oleh if, ketika elseif digunakan, else biasanya digunakan di akhir untuk melakukan aksi tertentu ketika semua kondisi tidak terpenuhi.

Ketiganya biasanya digabungkan ketika kita memiliki beberapa kondisi.

Sintaks

if (kondisi1) {
  aksi1
} elseif (kondisi2) {
  aksi2
} else {
  aksiDefault
}

PHP mengevaluasi kode kita dari bawah keatas. Jadi, pertama-tama kondisi1 akan diperiksa jika menghasilkan nilai true maka aksi1 akan dievaluasi setelah itu interpreter PHP akan langsung keluar dari percabangan, tidak mengecek kondisi2 atau kondisi lain yang ada di bawahnya.

Jika kondisi1 bernilai false, maka aksi1 tidak dievaluasi, interpreter akan lanjut memeriksa kondisi berikutnya, dalam hal ini kondisi2, ini akan diperiksa seperti halnya kondisi1.

Jika kondisi2 juga menghasilkan nilai false, maka blok else yaitu aksiDefault akan dieksekusi, blok else hanya akan dieksekusi jika semua kondisi diatasnya bernilai false.

Jadi, interpreter akan memeriksa kondisi secara berurutan dari bawah ke atas, jika ditemukan kondisi yang bernilai true aksi dalam kondisi tersebut dieksekusi, setelah aksi tersebut selesai, maka keluar dari percabangan tidak memeriksa kondisi dibawahnya.

Aksi di dalam else hanya dieksekusi jika semua kondisi diatasnya bernilai false. blok else dapat dihilangkan jika tidak diperlukan, dan blok elseif bisa dibuat lebih dari satu.

Mari kita lihat contoh berikut.

$nilaiBudi = 80;
$nilaiUcup = 80;

if($nilaiBudi > $nilaiUcup) {
  echo "nilai budi lebih besar dari ucup";
} elseif ($nilaiBudi === $nilaiUcup) {
  echo "nilai budi sama dengan ucup";
} else {
  echo "nilai budi lebih kecil dan ucup";
}

// OUTPUT: nilai budi sama dengan ucup

Kondisi pertama yaitu $nilaiBudi > $nilaiUcup menghasilkan nilai false, sedangkan kondisi berikutnya $nilaiBudi === $nilaiUcup menghasilkan nilai true oleh karena itu aksi yang ada di dalam kondisi tersebut dieksekusi yaitu echo "nilai budi sama dengan ucup"; yang menghasilkan output "nilai budi sama dengan ucup".

Mari kita buktikan bahwa interpreter PHP tidak memeriksa kondisi berikutnya setelah menemukan kondisi true, meskipun ada kondisi lain yang menghasilkan nilai true dibawahnya.

if(true) {
  echo "aksi1";
} elseif (true) {
  echo "aksi2";
} else {
  echo "aksi3";
}

// OUTPUT: aksi1

Kode diatas hanya mencetak output aksi1 padahal kondisi pada aksi2 juga bernilai true mengapa PHP tidak juga mencetak output aksi2?

Alasanya seperti yang sudah kita bahas, interpreter memeriksa kondisi secara berurutan dari atas ke bawah, jika ditemukan kondisi true mereka hanya akan mengeksekusi aksi yang ada di dalamnya dan langsung keluar, tidak memeriksa kondisi dibawahnya, oleh karena itu output aksi2 tidak muncul dilayar.

Percabangan Bersarang

Semua contoh kode yang kita pelajari diatas adalah percabangan satu lapis, kita sebetulnya juga bisa menulis percabangan di dalam percabangan, tidak ada sintaks khusus untuk membuat ini, kita hanya perlu memasukkan percabangan yang sudah dipelajari sebelumnya di dalam percabangan lain.

Tidak ada batas kedalaman percabangan bersarang, kita bisa membuatnya sedalam yang kita mau.

Mari kita lihat contoh berikut.

$nilaiBudi = 90;
$nilaiUcup = 80;

if($nilaiBudi > $nilaiUcup) {
  if($nilaiBudi % 2 === 0) {
    echo "nilai budi lebih besar dari ucup dan genap";
  } else {
    echo "nilai budi lebih besar dari ucup dan ganjil";
  }
} elseif ($nilaiBudi === $nilaiUcup) {
  echo "nilai budi sama dengan ucup";
} else {
  echo "nilai budi lebih kecil dan ucup";
}

// OUTPUT: nilai budi lebih besar dari ucup dan genap