Menu

PHP if, elseif ve else: Örneklerle Koşul İfadeleri

if (condition) { ... } bir bloğu yalnızca koşul true olduğunda çalıştırır, elseif sonraki koşulu kontrol eder, else ise hiçbiri eşleşmediğinde çalışır. elseif ile else if farkı, && ve ||, truthy değerler ve HTML şablonları için if: endif; sözdizimi.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

if (condition) { ... } bloğunu yalnızca koşul true olduğunda çalıştırır. Başka durumlar için elseif (other condition) { ... }, geri kalan her şey için else { ... } ekleyin. PHP koşulları yukarıdan başlayarak kontrol eder ve yalnızca eşleşen ilk bloğu çalıştırır.

$temperature değerini değiştirip tekrar çalıştırın. Kontroller yukarıdan aşağıya gittiği için 24 ikinci koşulda durur ve o da true olduğu hâlde >= 10 koşuluna hiç ulaşmaz. Koşullarınızı en özelden en genele doğru sıralayın.

elseif ile else if

Süslü parantezle elseif ve else if aynı şeyi yapar. else if teknik olarak gövdesi yeni bir if olan bir else ifadesidir, ama sonuç aynıdır.

Fark yalnızca şablonlarda kullanılan iki nokta sözdiziminde (sonraki bölümler) ortaya çıkar. Orada else if kodu bozar:

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

elseif ifadesini tek kelime olarak yazın, bu hatayla hiç karşılaşmazsınız.

&& ve || ile birden çok koşul

&& (ve) iki tarafın da true olmasını, || (veya) en az birinin true olmasını gerektirir, ! ise bir koşulu tersine çevirir. PHP yanıt belli olur olmaz değerlendirmeyi durdurur; bu yüzden $user !== null && $user['active'] ifadesinde ikinci kısım yalnızca bir kullanıcı olduğunda çalışır.

&& ve || operatörlerini karıştırdığınızda parantez ekleyin: && daha sıkı bağlanır ve parantezler niyeti bir sonraki okuyucu için açık hâle getirir. PHP'de and ve or anahtar kelimeleri de vardır, ama önceliklerinden = operatöründen düşüktür; bu yüzden $ok = true and false; $ok değişkenini true yapar. && ve || ile devam edin.

Bir if içinde neyin true sayıldığı

Koşulun bir boolean olması gerekmez. PHP onu dönüştürür ve bir avuç değer false sayılır: false, 0, 0.0, "", "0", [] ve null. "false", " " ve "0.0" dahil geri kalan her şey true olur.

if ($x) her değeri nasıl görür
Point at or tap a cell to read it as PHP.
$xboolempty
false
0
0.0
""
"0"
null
[]
" "
"0.0"
"a"
[0]
1
Every cell computed by PHP 8.3.19.

if ($items) ifadesinin "dizi boş değil" demenin yaygın bir yolu olmasının nedeni budur. Can yakan satır "0" satırıdır: birinin 0 yazdığı bir form alanı boş olmayan bir stringdir, ama if ($_POST['qty']) onu false olarak değerlendirir. Sıfır geçerli bir yanıt olduğunda açıkça karşılaştırın (if ($qty !== '')). empty() fonksiyonunun ne döndüreceğine de aynı kurallar karar verir.

if: ve endif; ile HTML'de if else

HTML etiketleri arasında süslü parantezleri kaybetmek kolaydır. PHP'nin alternatif bir sözdizimi vardır: koşuldan sonra iki nokta, diğer dallar için elseif ...: ve else:, sonda ise endif;. Bu bloğu çalıştırın, sonra Page sekmesindeki puanlara tıklayın: her bağlantı aynı betiği yeni bir $_GET['score'] değeriyle yeniden çalıştırır.

<?= $score ?>, <?php echo $score; ?> ifadesinin kısaltmasıdır. Aynı iki nokta stili döngüler için de vardır (foreach: endforeach;, while: endwhile;) ve çoğu PHP şablonunun kullandığı budur.

Tek satırlık if ve ternary operatörü

Koşuldan sonra süslü parantez olmadan tek bir ifade gelebilir. Çalışır, ama eklediğiniz bir sonraki satır if içinde olmaz; bu yüzden birçok stil kılavuzu her zaman süslü parantez ister. İki değerden birini seçmek için ternary operatörü tam bir if/else ifadesinden daha kısadır.

Tek bir değişkenle karşılaştırılacak çok sayıda kesin değer olduğunda bir match ifadesi uzun bir elseif zincirinden daha iyi okunur.

İç içe yazmak yerine erken dönün

Derin iç içe geçmiş if blokları zor takip edilir. Bir fonksiyonun içinde önce başarısızlık durumlarını kontrol edin ve hemen return edin. Ana mantık böylece sol kenarda kalır.

Sık yapılan hata: koşulda == yerine =

Tek bir = atama yapar. if ($role = 'admin'), $role içine 'admin' saklar ve sonra true olan bu stringi test eder. Blok her kullanıcı için çalışır ve $role artık yanlış da olur.

Tür dönüşümü istemek için bir nedeniniz yoksa karşılaştırmalarda === kullanın. Bazıları sabiti önce yazar (if ('admin' === $role)); böylece eksik bir = sessiz bir atama yerine bir hata olur.

Sıkça Sorulan Sorular

PHP'de elseif ile else if arasındaki fark nedir?

Süslü parantezle aynı şekilde davranırlar: else if, gövdesi başka bir if olan bir else ifadesidir. İki nokta sözdizimiyle (if (...): ... endif;) yalnızca elseif çalışır, else if ise bir ayrıştırma hatasıdır. Her yerde elseif kullanmak bu farktan kaçınmanızı sağlar.

PHP if ifadesinde birden çok koşulu nasıl kontrol ederim?

Onları && (hepsi true olmalı) veya || (en az biri) ile birleştirin: if ($age >= 18 && $hasTicket) { ... }. İkisini karıştırdığınızda parantez kullanın, örneğin if ($isAdmin || ($isOwner && $isActive)).

PHP'de tek satırda if ifadesi nasıl yazılır?

Koşuldan sonra süslü parantez olmadan tek bir ifade gelebilir: if ($debug) echo 'debug mode';. Tek satırda iki değer arasında seçim yapmak için ternary operatörünü kullanın: $label = $count === 1 ? 'item' : 'items';.

PHP'de HTML içinde if else nasıl kullanılır?

HTML etiketleri arasında iyi okunan alternatif sözdizimini kullanın: <?php if ($loggedIn): ?> <p>Welcome back</p> <?php else: ?> <a href="/login">Log in</a> <?php endif; ?>.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA