php switch yapısı | Dersim php

8 Kasım 2014 Cumartesi

php switch yapısı

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; 
}
Ö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