Php
switch, if komutu mantığında çalışan bir komuttur. IF ile sadece Evet/Hayır cevaplarına
göre işlem yapılırken switch ile ikiden fazla ihtimale göre işlem yapılır.
Seçilen değişkenin değerinin belirli durumlara uyup uymadığını
kontrol eden yapıdır. Değişkenin değeri, belirtilen birçok durumdan hangisine
uyuyorsa o durum altındaki komutlar çalışır. Bunu, ben if ile de yapabilirim
diye düşünebilirsiniz. Doğru düşünüyorsunuz. switch ile yaptığınız işi if
yapısı ile de yapabilirsiniz. Burada switch yapısının avantajı daha düzenli kod
yazmamızı sağlamasıdır.
Kullanımı
şu şekildedir.
switch ($degisken){ case $durum1: //
durum1 sağlanırsa çalışacak kodlar break; case durum2: //
durum2 sağlanırsa çalışacak kodlar break; . . . default: //
hiçbir durum sağlanmazsa çalışacak kodlar } |
Eğer seçeneklerden hiçbiri
uymazsa default isimli bölüm çalışır.
Seçilen
değişkenin değeri hangi duruma uyarsa o durum altındaki komutlar çalışır. break ifadesi, durum sağlanırsa başka durumlara
bakılmasını engellemek için kullanılır. Eğer break kullanmazsanız durumlardan
biri sağlandığında, ondan sonraki tüm durumlar da çalıştırılır. Bu genelde
istenmez. Son olarak; default ifadesinden
sonra break kullanılmadığına dikkat ediniz. Çünkü default'tan sonra başka durum
olmadığından break kullanmaya gerek yoktur.
ÖRNEK:
$cevap= "Olabilir";
switch ($cevap){
case "Evet":
echo "Oldu bu iş";
break;
case "Hayır":
echo "Tüh bee";
break;
case "Belki":
echo "Neyse sağlık olsun";
break;
case default:
echo "O kadar ihtimalden birini seçemedin demek";
break;
}
switch ($cevap){
case "Evet":
echo "Oldu bu iş";
break;
case "Hayır":
echo "Tüh bee";
break;
case "Belki":
echo "Neyse sağlık olsun";
break;
case default:
echo "O kadar ihtimalden birini seçemedin demek";
break;
}
ÖRNEK:
<?php $sayi=2; switch ($sayi){ case 0: echo "Sayı
0'dır."; break; case 1: echo "Sayı
1'dir."; break; case 2: echo "Sayı
2'dir."; break; default:
echo "Sayı
0,1 ve 2 değildir."; } ?> |
Burada
$sayi değişkeninin değerlerine bakıyoruz. Değeri 2 olduğundan ekrana Sayı 2'dir. yazacaktır. echo ve break komutlarını aynı
satırda buradaki gibi yazabilirsiniz. Şimdi bu işlemi if yapısı ile yapalım.
<?php $sayi=2; if($sayi==0) echo "Sayı
0'dır."; elseif($sayi==1) echo "Sayı
1'dir."; elseif($sayi==2) echo "Sayı
2'dir."; else echo "Sayı
0,1 ve 2 değildir."; ?> |
Görüldüğü
üzere aynı işlemi rahatlıkla if ile de yapabilirsiniz. Tercih sizindir. Bazı
durumlarda switch yapısı daha kolay olabilir.
Örnek: Beş
üzerinden tanımlı notun yazı karşılığını ekrana yazdıralım.
<?php $notu=2; switch ($notu){ case 0: echo "Başarısız";
break; case 1: echo "Zayıf";
break; case 2: echo "Geçer";
break; case 3: echo "Orta";
break; case 4: echo "İyi";
break; case 5: echo "
Pekiyi "; break; default:
echo "Yanlış
Giriş"; } ?> |
|
|
|
Örnek: Şimdi
de sayının tek ya da çift olma durumunu ekrana yazdıralım.
<?php $sayi=23; switch ($sayi%2){
// sayının 2'ye bölümünden kalan case 0: echo "Sayı
çifttir."; break; default:
echo "Sayı
tektir."; break; } ?> |
Örnek: Tanımlı olan
işleme göre iki sayıyı işleme alıp sonucu ekrana yazalım.
<?php $islem="*"; $sayi1=16; $sayi2=4; switch ($islem){ case "+":
$sonuc=$sayi1+$sayi2; break; case "-":
$sonuc=$sayi1-$sayi2; break; case "*":
$sonuc=$sayi1*$sayi2; break; default:
$sonuc=$sayi1/$sayi2; } echo "Sonuç=$sonuc"; ?> |
Kontrol
edeceğiniz değişken sayı olabileceği gibi buradaki gibi string bir ifade de
olabilir. Aynı zamanda boolean, sabit ve dizi değişkenleri de burada
kullanabilirsiniz.
Örnek: Tanımlı olan
kullanıcıya hoş geldiniz mesajı yazdıralım.
<?php $kullanici="Büşra"; $cinsiyet="bayan"; switch ($cinsiyet){ case "bay":
echo "Hoşgeldiniz
$kullanici Bey"; break; default:
echo "Hoşgeldiniz
$kullanici Hanım"; } ?> |
Örnek: Tanımlı olan
mevsime göre ayları ekrana yazdıralım.
<?php $mevsim="ilkbahar"; switch ($mevsim){ case "ilkbahar":
echo "Mart
Nisan Mayıs"; break; case "yaz":
echo "Haziran
Temmuz Ağustos"; break; case "sonbahar":
echo "Eylül
Ekim Kasım"; break; case "kış":
echo "Aralık
Ocak Şubat"; break; default: echo
“Yanlış Giriş” } ?> |
Bu kez
değişik bir örnek yapalım. Pek kullanılmasa da durum kısmında aşağıdaki gibi
bir karşılaştırma da yapabilirsiniz.
Örnek: Sayının
negatif, pozitif ya da sıfır olma durumunu ekrana yazdıralım.
<?php $sayi=-10; switch ($sayi){ case 0: echo "Sayı
sıfırdır.";break; case $sayi>0:
echo "Sayı
pozitiftir.";break; default:
echo "Sayı
negatiftir."; } ?> |
Not: Burada
önce sayının sıfır olma durumunu kontrol ediniz. Aksi halde hatalı sonuç
alırsınız. Sıfırdan farklı sayılarla çalışırken istediğiniz sırada durumları
ifade edebilirsiniz.
Örnek: 100 üzerinden
tanımlanmış bir notun 5 üzerinden karşılığını ekrana yazdıralım.
<?php $notu=64; switch ($notu){ case 85<=$notu:
echo "5-Pekiyi";
break; case 70<=$notu:
echo "4-İyi";
break; case 55<=$notu:
echo "3-Orta";
break; case 45<=$notu:
echo "2-Geçer";
break; case 25<=$notu:
echo "1-Zayıf";
break; default:
echo "Başarısız"; } ?> |
Örnek: Tanımlı olan 3
sayıdan en büyüğünü bulalım.
<?php $sayi1=10; $sayi2=7; $sayi3=15; switch (true){ case ($sayi1>=$sayi2 and $sayi1>=$sayi3):
$eb=$sayi1; break; case ($sayi2>=$sayi1 and $sayi2>=$sayi3):
$eb=$sayi2; break; default:
$eb=$sayi3; } echo "En
büyük sayı: $eb"; ?> |
Görüldüğü gibi durum kısmında mantıksal operatörler de
kullanabilirsiniz. Bunun yanında true kısmına bakarsanız burada biraz farklı
bir işlem yapılmıştır. Zira kontrol edilen bir değişken değil tam tersine
durumdur. Yani durumlardan hangisinin true olduğunu kontrol ettik. Normalde hep
bir değişkenin hangi duruma uyduğunu kontrol ediyorduk.
Örnek:
Tanımlı olan sayıya karşılık gelen günü ekrana yazdıralım.
<?php $gun=4; switch ($gun){ case 1: echo "Pazartesi";break; case 2: echo "Salı";break; case 3: echo "Çarşamba";break; case 4: echo "Perşembe";break; case 5: echo "Cuma";break; case 6: echo "Cumartesi";break; default:
echo "Pazar"; } ?> |
Örnek: Hafta içi
çalışanların maaşına 50 TL, hafta sonu çalışanların maaşına 70 TL ekleyelim.
<?php $maas=500; $gun="salı"; switch ($gun){ case "pazartesi": case "salı": case "çarşamba": case "perşembe": case "cuma":$maas+=50;break; case "cumartesi": default:
$maas+=70; } echo "Maaş=$maas"; ?> |
Oldukça ilginç bir kullanım. Biraz açıklamaya çalışalım. Bir
durumdan sonra komut yazmak zorunda değilsiniz. Bu, sonraki duruma geçmek için
kullanılır. Hafta içindeki günlerden biri ise pazartesi, salı, çarşamba,
perşembe ya da cuma olması fark etmiyor. Eğer bu durumlardan birine girilirse
break olmadığı için cuma'ya kadar gidilir ve cuma durumunda 50 TL eklenir.
Sonra break ile hafta sonuna geçilmesi engelleniyor. Aynı mantıkla cumartesi
için break kullanılmayarak pazar gününe gidiliyor ve 70 TL ekleniyor. Diyelim
ki; günlerden salı olsun. Salı durumuna girildi break olmadığı için cuma'ya
kadar gidildi ve 50 TL eklendi ve break ile çıkıldı. Diyelim ki cumartesi;
break olmadığı için pazar'a gidilir ve 70 TL eklenir.
0 yorum
Yorum Gönder