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:
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