Web uygulamalarında, belirli bir değeri kontrol edip farklı durumlara göre işlem yapmak isteyebiliriz. Bunu yapmak için en sık kullanılan yapılardan biri if-elseif-else
zinciridir. Ancak bu yapı çok fazla alternatif içerdiğinde okunabilirliği zorlaştırır.
İşte bu gibi durumlarda PHP switch case
yapısı, daha temiz ve düzenli bir yol sunar. Çok sayıda koşullu durum arasında seçim yapmamız gerektiğinde switch case
kullanmak kodumuzu daha anlaşılır hale getirir.
PHP Switch case syntax yapısı:
1 2 3 4 5 6 7 8 9 10 | switch (ifade) { case deger1: // Kodlar break; case deger2: // Kodlar break; default: // Hiçbir case eşleşmezse çalışır } |
switch
, içine yazılan değeri sırayla hercase
ile karşılaştırır.Eğer bir
case
değeriyle eşleşirse, o bloğun içindeki kodlar çalışır.break
ifadesi, ocase
bloğundan çıkılmasını sağlar. Aksi takdirde alttaki case’ler de çalışmaya devam eder (fall-through durumu oluşur).default
, hiçbir case eşleşmediğinde çalışır. Tıpkıelse
gibidir.
PHP Switch case yapısını örneklerle pekiştirelim ve nerelerde nasıl kullanıldığına bakalım.
- Haftanın günlerine göre kullanıcıya mesaj atan bir program oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $gun = "Cuma"; switch ($gun) { case "Pazartesi": echo "Yeni bir hafta."; break; case "Cuma": echo "Hayırlı cumalar."; break; case "Pazar": echo "Tatil zamanı."; break; default: echo "Normal bir gün."; } ?> |
Bu kod, günün ne olduğuna bakarak farklı bir çıktı veriyor. Default olarak gün değişkeni Cuma olarak atanmış. Böylelikle ekrana “Hayırlı cumalar.” yazdırır. Başka bir gün olsaydı o case içerisine atanmış mesajı yazdıracaktı. Kod çıktısı ise şöyle olacak:
1 | Hayırlı cumalar. |
- PHP Switch case ile Menü oluşturarak kullanıcıdan işlem seçtirmek
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php // Kullanıcıdan bir sayı al echo "Lütfen bir işlem seçin (1: Toplama, 2: Çıkarma, 3: Çarpma, 4: Bölme): "; $secim = trim(fgets(STDIN)); // Kullanıcıdan giriş alıp boşlukları temizle switch ($secim) { case 1: echo "Toplama işlemi seçildi."; break; case 2: echo "Çıkarma işlemi seçildi."; break; case 3: echo "Çarpma işlemi seçildi."; break; case 4: echo "Bölme işlemi seçildi."; break; default: echo "Geçersiz işlem!"; } ?> |
Bu kod, bir menüden hangi işlem türünün seçildiğini kontrol ediyor ve ona göre bir mesaj veriyor. $secim değişkeninin değeri kullanıcının seçimine göre case seçerek ekrana ona göre çıktı verecek. Örneğin case 1 seçilmiş olsaydı kod çıktısı şöyle olacaktı:
1 | Toplama işlemi seçildi. |
PHP Switch case ile kullanıcının girdiği ortalamaya göre harf notu hesaplayan bir program yazalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php echo "Lütfen notunuzu girin:"; switch (true) { case ($not >= 88 && $not <= 100): echo "Harf notunuz: AA"; break; case ($not >= 80 && $not <= 87): echo "Harf notunuz: BA"; break; case ($not >= 73 && $not <= 79): echo "Harf notunuz: BB"; break; case ($not >= 66 && $not <= 72): echo "Harf notunuz: CB"; break; case ($not >= 60 && $not <= 65): echo "Harf notunuz: CC"; break; case ($not >= 55 && $not <= 59): echo "Harf notunuz: DC"; break; case ($not >= 50 && $not <= 54): echo "Harf notunuz: DD"; break; case ($not >= 0 && $not <= 49): echo "Harf notunuz: FF"; break; default: echo "Geçersiz not aralığı!"; } ?> |
Kullanıcı tarafından bir girdi isteniyor, bu doğrultuda harf notu belirlenen koşul değerleri arasındaysa o case çağırılıyor. Bu yapının aynısı if-else koşul yapısıyla da oluşturabiliriz. Kod çıktısı şu şekilde olacaktır:
1 2 3 | Lütfen notunuzu girin: 95 Harf notunuz: AA |