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 hercaseile karşılaştırır.Eğer bir
casedeğeriyle eşleşirse, o bloğun içindeki kodlar çalışır.breakifadesi, ocasebloğ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ıelsegibidir.
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 |


