if (condition) { ... } menjalankan bloknya hanya saat kondisinya true. Tambahkan elseif (other condition) { ... } untuk kasus lain dan else { ... } untuk semua sisanya. PHP memeriksa kondisi dari atas dan hanya menjalankan blok pertama yang cocok.
Ubah $temperature lalu jalankan lagi. Karena pemeriksaannya berjalan dari atas ke bawah, 24 berhenti di kondisi kedua dan tidak pernah sampai ke >= 10, meskipun kondisi itu juga true. Urutkan kondisimu dari yang paling spesifik ke yang paling umum.
elseif vs else if
Dengan kurung kurawal, elseif dan else if melakukan hal yang sama. Secara teknis else if adalah else yang body-nya berupa if baru, tetapi hasilnya identik.
Perbedaannya hanya muncul pada sintaks titik dua yang dipakai di template (bagian berikutnya). Di sana, else if merusak kode:
<?php $score = 72; ?>
<?php if ($score >= 90): ?>
<p>A</p>
<?php else if ($score >= 60): ?>
<p>Passed</p>
<?php endif; ?>
PHP Parse error: syntax error, unexpected token "if", expecting ":" in /home/index.php on line 4
Tulis elseif sebagai satu kata dan kamu tidak akan pernah bertemu error itu.
Banyak kondisi dengan && dan ||
&& (dan) butuh kedua sisinya true, || (atau) butuh setidaknya satu, dan ! membalik sebuah kondisi. PHP berhenti mengevaluasi begitu jawabannya sudah diketahui, jadi di $user !== null && $user['active'] bagian kedua hanya dijalankan saat ada user.
Saat kamu mencampur && dan ||, tambahkan tanda kurung: && mengikat lebih kuat, dan tanda kurung membuat maksudnya jelas bagi pembaca berikutnya. PHP juga punya kata kunci and dan or, tetapi prioritasnya lebih rendah daripada =, jadi $ok = true and false; mengisi $ok dengan true. Tetap pakai && dan ||.
Apa yang dianggap true di dalam if
Kondisinya tidak harus berupa boolean. PHP mengonversinya, dan beberapa nilai dianggap false: false, 0, 0.0, "", "0", [], dan null. Semua yang lain true, termasuk "false", " ", dan "0.0".
| $x | bool | empty |
|---|---|---|
| false | ||
| 0 | ||
| 0.0 | ||
| "" | ||
| "0" | ||
| null | ||
| [] | ||
| " " | ||
| "0.0" | ||
| "a" | ||
| [0] | ||
| 1 |
Itulah sebabnya if ($items) adalah cara umum untuk mengatakan "array-nya tidak kosong". Baris "0" adalah yang sering menjebak: field form tempat seseorang mengetik 0 adalah string yang tidak kosong, tetapi if ($_POST['qty']) menganggapnya false. Bandingkan secara eksplisit (if ($qty !== '')) saat nol adalah jawaban yang valid. Aturan yang sama menentukan apa yang dikembalikan empty().
if else di HTML dengan if: dan endif;
Di antara tag HTML, kurung kurawal mudah terlewat. PHP punya sintaks alternatif: titik dua setelah kondisi, elseif ...: dan else: untuk cabang lainnya, dan endif; di akhir. Jalankan blok ini, lalu klik skor-skornya di tab Halaman: setiap link menjalankan script yang sama lagi dengan $_GET['score'] yang baru.
<?= $score ?> adalah singkatan dari <?php echo $score; ?>. Gaya titik dua yang sama juga ada untuk loop (foreach: endforeach;, while: endwhile;) dan dipakai oleh sebagian besar template PHP.
If satu baris dan operator ternary
Satu pernyataan boleh langsung mengikuti kondisi tanpa kurung kurawal. Cara ini berfungsi, tetapi baris berikutnya yang kamu tambahkan tidak akan berada di dalam if, jadi banyak panduan gaya mewajibkan kurung kurawal selalu. Untuk memilih salah satu dari dua nilai, operator ternary lebih singkat daripada if/else lengkap.
Saat ada banyak nilai pasti yang dibandingkan dengan satu variabel, ekspresi match lebih enak dibaca daripada rantai elseif yang panjang.
Return lebih awal alih-alih bersarang
Blok if yang bersarang dalam sulit diikuti. Di dalam fungsi, periksa kasus gagal lebih dulu dan langsung return. Logika utamanya lalu berada di tepi kiri kode.
Kesalahan umum: = alih-alih == di dalam kondisi
Satu = berarti assignment. if ($role = 'admin') menyimpan 'admin' ke $role lalu menguji string itu, yang bernilai true. Bloknya berjalan untuk setiap user, dan $role sekarang juga salah.
Pakai === untuk perbandingan kecuali kamu memang punya alasan untuk menginginkan type juggling. Sebagian orang menulis konstanta lebih dulu (if ('admin' === $role)), agar = yang kurang menjadi error alih-alih assignment yang diam-diam.
Pertanyaan yang sering diajukan
Apa perbedaan elseif dan else if di PHP?
Dengan kurung kurawal, keduanya berperilaku sama: else if adalah else yang body-nya berupa if lain. Dengan sintaks titik dua (if (...): ... endif;) hanya elseif yang berfungsi, dan else if menjadi parse error. Memakai elseif di mana-mana menghindari perbedaan itu.
Bagaimana cara memeriksa banyak kondisi di pernyataan if PHP?
Gabungkan dengan && (semua harus true) atau || (setidaknya satu): if ($age >= 18 && $hasTicket) { ... }. Pakai tanda kurung saat kamu mencampur keduanya, misalnya if ($isAdmin || ($isOwner && $isActive)).
Bagaimana cara menulis pernyataan if dalam satu baris di PHP?
Satu pernyataan boleh langsung mengikuti kondisi tanpa kurung kurawal: if ($debug) echo 'debug mode';. Untuk memilih antara dua nilai dalam satu baris, pakai operator ternary: $label = $count === 1 ? 'item' : 'items';.
Bagaimana cara memakai if else di dalam HTML di PHP?
Pakai sintaks alternatif, yang mudah dibaca di antara tag HTML: <?php if ($loggedIn): ?> <p>Welcome back</p> <?php else: ?> <a href="/login">Log in</a> <?php endif; ?>.