Anasayfa / PHP / PHP Karar Yapıları (If-Else ve Switch-Case)

PHP Karar Yapıları (If-Else ve Switch-Case)

Web geliştirme serüvenimizde şu ana kadar değişkenleri, veri tiplerini ve verileri nasıl saklayacağımızı öğrendik. Ancak yazdığımız programların hepsi yukarıdan aşağıya doğru dümdüz çalışan, karar verme yeteneği olmayan basit kodlardı. Gerçek dünyada ise yazdığımız uygulamaların çok daha “zeki” olması gerekir; programlar belirli koşulları değerlendirmeli ve bu koşulların sonuçlarına göre farklı eylemler gerçekleştirmelidir.

İşte programlama dünyasında kodlarımıza bu zekâyı ve esnekliği katan, onların belirli durumlara göre farklı yollar izlemesini sağlayan yapılara Karar Yapıları (Control Flow / Conditional Statements) adı verilir. Bu rehberde, PHP’deki temel karar yapılarını, mantıksal sınamaları ve bunları gerçek projelerde nasıl kullanacağınızı, ilk defa öğrenen birinin anlayacağı basitlikte ve bol örnekle inceleyeceğiz.

Karar Yapısı Nedir ve Neden Kullanılır?

Günlük hayattan bir örnek düşünün: “Eğer hava yağmurluysa şemsiyeni al, değilse güneş gözlüğünü al.” Bu çok temel bir karar mekanizmasıdır. Beynimiz sürekli olarak bir koşulu (havanın yağmurlu olması) değerlendirir ve çıkan sonuca (doğru veya yanlış) göre bir eylem planı seçer.

Web sitelerinde de durum birebir aynıdır. Bir kullanıcının sisteme giriş yapıp yapmadığını kontrol etmek, kullanıcının yaşına göre belirli bir içeriği gizlemek veya bir e-ticaret sitesinde sepet tutarına göre kargo bedava kampanyası uygulamak tamamen PHP karar yapıları ile mümkündür. Karar yapıları, uygulamanızın kalbidir ve dinamik web sayfaları oluşturmanın temel şartıdır.

Şimdi PHP’nin bize sunduğu araçlara yakından bakalım.

1. Temel Karar Mekanizması: if Yapısı

PHP’deki en basit karar yapısı if (eğer) ifadesidir. Bu yapı, parantez içerisine yazılan bir koşulun doğru (TRUE) olup olmadığını kontrol eder. Eğer koşul doğruysa, hemen altındaki süslü parantezler { } içerisindeki kod bloğu çalıştırılır; eğer yanlışsa (FALSE), PHP bu kod bloğunu tamamen görmezden gelerek yoluna devam eder.

<?php
$sicaklik = 35;

// Eğer sıcaklık 30'dan büyükse içerideki kod çalışır
if ($sicaklik > 30) {
    echo "Hava bugün gerçekten çok sıcak!";
}
?>

Yukarıdaki örnekte PHP, $sicaklik değişkeninin 30’dan büyük olup olmadığını kontrol eder. Değer 35 olduğu için koşul doğrulanır ve ekrana uyarı mesajı basılır. Ancak sıcaklık 20 olsaydı, ekranda hiçbir şey görmezdik.

2. İki İhtimali Değerlendirmek: if-else Yapısı

if ifadesi tek başına oldukça kısıtlıdır çünkü sadece koşul doğru olduğunda ne yapılacağını söyler. Çoğu zaman, “Eğer X olursa Y yap, aksi takdirde Z yap” şeklinde bir mantığa ihtiyaç duyarız. İşte bu noktada devreye else (değilse) anahtar kelimesi girer.

Örneğin, bir okul sisteminde öğrencinin sınavdan geçip geçmediğini hesaplayalım:

<?php
$sinav_notu = 75;

if ($sinav_notu >= 50) {
    // Koşul doğruysa bu blok çalışır
    echo "Tebrikler, sınavı geçtin!";
} else {
    // Koşul yanlışsa (not 50'den küçükse) bu blok çalışır
    echo "Üzgünüm, sınavı geçemedin.";
}
?>

Yukarıdaki kodda öğrencinin notu 50 veya daha yüksekse birinci mesaj, aksi durumda (50’nin altındaysa) otomatik olarak else bloğundaki ikinci mesaj gösterilecektir.

3. Pratik ve Kısa Kullanım: Ternary (Üçlü) Operatör

Bazen sadece tek satırlık basit bir if-else koşulu yazmak için 5-6 satır kod (süslü parantezler vb.) kullanmak kalabalık yaratabilir. PHP, bu tür basit “doğru/yanlış” kararları için Koşullu (Ternary) Operatör adı verilen harika bir kısayol sunar.

Bu yapının formülü şöyledir: koşul ? doğruysa_yapılacaklar : yanlışsa_yapılacaklar;.

Aynı yaş/etiket örneğini ternary operatör ile çok daha kısa yazalım:

<?php
$yas = 20;

// Uzun if-else yerine tek satırda çözüm
$etiket = ($yas >= 18) ? "Yetişkin" : "Çocuk";

echo "Kullanıcı durumu: " . $etiket;
// Çıktı: Kullanıcı durumu: Yetişkin
?>

Eğer koşul ($yas >= 18) doğruysa soru işaretinden (?) hemen sonraki değer alınır, yanlışsa iki nokta üst üsteden (:) sonraki değer alınır.

4. İkiden Fazla Seçeneği Yönetmek: if-elseif-else Yapısı

Gerçek hayatta olaylar her zaman sadece siyah ve beyaz değildir; bazen gri alanlar veya birden çok seçenek olabilir. Bu gibi durumlarda, birden fazla koşulu zincirleme olarak birbirine bağlamamızı sağlayan elseif (değilse eğer) yapısını kullanırız.

Diyelim ki bir izci kampındasınız ve izcileri yaşlarına göre farklı renklerdeki çadırlara atamak istiyorsunuz.

<?php
$izci_yasi = 13;

if ($izci_yasi <= 9) {
    echo "Kırmızı çadıra atandın.";
} elseif ($izci_yasi > 9 && $izci_yasi <= 11) {
    echo "Mavi çadıra atandın.";
} elseif ($izci_yasi > 11 && $izci_yasi <= 14) {
    echo "Yeşil çadıra atandın.";
} elseif ($izci_yasi > 14 && $izci_yasi <= 17) {
    echo "Siyah çadıra atandın.";
} else {
    echo "Lütfen kamp yöneticisiyle görüşün.";
}
?>

Yukarıdaki örnekte PHP kodları yukarıdan aşağıya okumaya başlar. Hangi koşul (örneğin 13 yaş, yeşil çadır koşuluna uyar) doğru çıkarsa, o bloğu çalıştırır ve diğer tüm ihtimalleri atlayarak karar yapısından çıkar. Hiçbir şarta uymazsa, “her ihtimale karşı” bir güvenlik ağı görevi gören en sondaki else bloğu çalışır.

5. Alternatif Çoklu Seçim: switch-case Yapısı

Bir değişkenin aldığı farklı kesin değerlere (Örneğin: Pazartesi, Salı, Çarşamba vb.) göre çok sayıda farklı işlem yapmanız gerekiyorsa, ardı ardına onlarca if-elseif yazmak kodunuzu çok karmaşık ve okunması zor bir hale getirebilir. Bu durumlar için PHP bize switch-case (durum seçimi) yapısını sunar.

switch-case, bir değişkeni alır ve bir dizi değerle eşleşip eşleşmediğini kontrol eder, eşleşme bulduğunda ilgili kodları çalıştırır.

<?php
$ay = "Şubat";

switch ($ay) {
    case "Nisan":
    case "Haziran":
    case "Eylül":
    case "Kasım":
        echo "Bu ay 30 gün.";
        break; // İşlemi durdur ve switch bloğundan çık

    case "Şubat":
        echo "Bu ay 28 veya 29 gün.";
        break;

    default:
        // Hiçbir case ile eşleşmezse bu blok çalışır
        echo "Bu ay 31 gün.";
        break;
}
?>

Burada dikkat etmeniz gereken en önemli komut break komutudur. Eşleşme sağlandıktan sonra, PHP’nin diğer durumları da yanlışlıkla çalıştırmasını engellemek için kod bloğunu break ile kırıp dışarı çıkmak zorunludur. default anahtar kelimesi ise, tıpkı else gibi, yukarıdaki ihtimallerin hiçbiri gerçekleşmediğinde (Örneğin aya ‘Ekim’ girildiğinde) çalışacak olan standart bloğu temsil eder.

6. Karar Yapılarına “Zekâ” Katan Mantıksal Operatörler

Karar mekanizmalarımızı incelerken, koşulların içinde hep > (büyüktür), >= (büyük eşittir), == (eşittir) gibi Karşılaştırma Operatörleri kullandık. Ancak bazen bir kararı vermek için birden fazla şartın aynı anda gerçekleşmesi gerekir. Bu durumda Mantıksal Operatörler (Logical Operators) olan AND, OR ve NOT devreye girer.

  • AND (&& – VE): Her iki koşulun da doğru (TRUE) olması zorunludur. Aksi halde kod çalışmaz.
  • OR (|| – VEYA): Koşullardan sadece bir tanesinin doğru olması yeterlidir.
  • NOT (! – DEĞİL): Koşulun tersini alır (Doğruysa yanlış yapar).

Bir sinema bileti uygulamasında indirimleri hesaplamak için harika bir örnek yapalım: Eğer müşteri 15 yaşından küçükse VEYA 65 yaşından büyükse indirim uygulanacaktır.

<?php
$musteri_yasi = 14;

// Yaş 15'ten küçük VEYA 65'ten büyük mü?
if ($musteri_yasi < 15 || $musteri_yasi > 65) {
    echo "Tebrikler, biletiniz indirimli!";
} else {
    echo "Biletiniz tam fiyatlandırılmıştır.";
}
?>

Bu örnekte müşteri yaşı 14 olduğu için $musteri_yasi < 15 koşulu TRUE (Doğru) döndürür. Arada || (VEYA) operatörü olduğu için, sağ taraftaki şartın ne olduğunun bir önemi kalmaz ve sistem müşteriye indirimli bilet verir.

Sonuç

PHP karar yapıları olan if, else, elseif ve switch-case, algoritmik düşünce becerinizin (yani karşılaştığınız bir problemi bilgisayarın anlayacağı adım adım mantık kurallarına dönüştürme becerisinin) kodlara dökülmüş halidir. Veri tabanından çekilen bilgilerin gösterilip gösterilmeyeceğine, kullanıcı yetkilerinin kontrolüne ve güvenlik kısıtlamalarına kadar web uygulamanızın tüm kilit noktalarında bu yapılarla karşılaşacaksınız.

Karar mekanizmalarını öğrendiğinize göre, programlamada devrim yaratan bir sonraki büyük konuya geçmeye hazırsınız demektir: Onlarca, yüzlerce hatta binlerce veriyi saniyeler içinde otomatik olarak tekrar tekrar işleyebilmemizi sağlayan Döngüler (Loops). Pratik yapmaya ve PHP ile web sitelerinize zekâ katmaya devam edin!

Etiketlendi:

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir