PHP Switch Case Kullanımı

Switch, if’e benzer. Seçilen değişkenin belirli durumlara uyup uymadığını kontrol eder. Switch ile yapacağımız kodu if-elseif ile de yapabiliriz. Switch, if-elseif ile yazacağımız koddan hem hızlı hemde kullanımı kolaydır. Aşağıda yapısını gösterdim.

<?php
switch(DEGISKEN){
    case DURUM:
        DURUM TRUE OLDUGU ZAMAN YAPILACAK ISLEM
        break;
    case DURUM2:
        DURUM2 TRUE OLDUGU ZAMAN YAPILACAK ISLEM
        break;
    default:
        KOSULLAR SAGLANMADIGI ZAMAN YAPILACAK ISLEM
        break;
}
?>

Değişkenimiz istediğimiz durumları sağlamadığı zaman default işlemi çalıştırılacaktır. case ile duruma bakılır, break ifadesine geldiği zaman switch’in dışına çıkar. Örnek olarak girilen bir sayının harf olarak karşılığını yazalım.

<?php
$sayi = 1;
if($sayi == 0){
    echo "Sayi 0'tir";
}else if($sayi == 1){
    echo "Sayi 1'dir";
}else if($sayi == 2){
    echo "Sayi 2'dir";
}
switch($sayi){
case 0:
    echo "Sayi 0'tir";
    break;
case 1:
    echo "Sayi 1'dir";
    break;
case 2:
    echo "Sayi 2'dirr";
    break;
}

?>

Yukarıda hem if ile hem de switch ile yazdım. İki kodda aynı sonucu verecektir. Switch’in güzel aynı daha düzenli ve hızlı çalışmasıdır. Switch’te başlangıçta hiçbir satır çalıştırılmaz. Yalnızca switch ifadesiyle birlikte verilen değer ile uyuşan case ifadesi bulunduğunda ilgili kod çalıştırılır. Switch sonlanana kadar ya da ilk break ifadesi ile karşılaşıncaya kadar çalışmasına devam eder.

Örnek olarak girilen ayın hangi mevsim olduğunu yazalım.

<?php
$ay = "Şubat";
switch($ay){
    case "Aralık":
    case "Ocak":
    case "Şubat":
        echo "Kış";
        break;
    case "Mart":
    case "Nisan":
    case "Mayıs":
        echo "İlkbahar";
        break;
    case "Haziran":
    case "Temmuz":
    case "Ağustos":
        echo "Yaz";
        break;
    case "Eylül":
    case "Ekim":
    case "Kasım":
        echo "Sonbahar";
        break;
}
?>

Switch’te case başladıktan sonra break ifadesi ile karşılaşana kadar durdurulmaz. Break ifadesine kadar işlemler yapılır. Break ifadesine gelince switch’den çıkar. Yazdığımız kodu incelediğimizde girdiğimiz ay, Şubat switch’de Şubat ayı için girdiğimiz bir durumumuz var. Kodumuz case ifadesinden sonra ilk break ifadesine kadar oradaki işlemleri yapar. Bizim yaptığımız işlem “Kış” diye yazdırmak oldu.

Eğer break ifadesini kullanmazsak, koşulumuz sağlandığı yerden sonraki bütün işlemleri yapar. Örnek olarak yukarıda yaptığımız girdiğimiz sayının harf karşılığını break kullanmadan yapalım.

<?php
$sayi = 1;
switch($sayi){
case 0:
    echo "Sayi 0'tir";
case 1:
    echo "Sayi 1'dir";
case 2:
    echo "Sayi 2'dirr";
}
?>

Sayımız şu anda 1, Sayımız 1 olduğu için 1 olduğu durum çalıştırılır. Break ifadesi olmadığı için switch sonlana kadar bütün işlemler yapar. Yukarıdaki kodu çalıştırdığımızda “Sayı 1’dirSayi 2’dir” yazacaktır. Eğer sayımız 0 olsaydı bütün ekrana yazdırma işlemlerini yapacaktı. Eğer sayımız 3 olsaydı koşulları sağlamadığı için ekrana hiçbir şey yazmayacaktı.

Switch’de koşul sadece 1 kere çalıştırılır ve case durumları ile karşılaştırılır. if-elseif ‘de koşul tekrar çalıştırılır ve karşılaştırılır. Eğer yapacağımız işlem basit bir karşılaştırma işleminden daha karmaşıksa veya bir döngü içerisinde ise switch kullanmak daha hızlı olabilir.

Örnek olarak 3 sayıyı karşılaştıralım.

<?php
$sayi = 5;
$sayi2 = 12;
$sayi3 = 66;

switch(true){
    case ($sayi > $sayi2 && $sayi > $sayi3) :
        echo "En büyük sayi ".$sayi;
        break;
    case ($sayi2 > $sayi && $sayi2 > $sayi3) :
        echo "En büyük sayi ".$sayi2;
        break;
    default:
        echo "En büyük sayi ".$sayi3;
        break;
}

switch ‘de değişken yerine true yazdım. Çünkü case durumlarından sonuç TRUE ise o kısım çalıştırılacak. Eğer FALSE yazarsak ilk FALSE olan durum çalıştırılacaktır. Eğer hiçbir sonuç sağlanmıyorsa default çalıştırılacaktır.

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir