Skip to main content
Skip to - Close
Skip to - Close
Completion requirements

switch

switch deyimi, aynı ifade içerisinde yer alan bir dizi if deyimine benzer. Birçok durumda, aynı değişkeni (ya da ifadeyi) birden çok değerle karşılaştırmak ve her karşılaştırmanın sonucunu ayrı bir kod parçası çalıştırarak değerlendirmek isteyebilirsiniz. İşte bu, switch deyiminin tercih edilme sebebidir.

Aşağıdaki iki örnek aynı şeyi yazmanın iki farklı yolunu göstermektedir. Birincisi bir dizi if ve elseif deyiminin kullanımını, ikincisi ise switch deyiminin kullanımını örneklemektedir.

<?php

    // if-elseif
    if ($i == 0){
        echo "i eşittir 0";
    }
    elseif ($i == 1){
        echo "i eşittir 1";
    }
    elseif ($i == 2){
        echo "i eşittir 2";
    }

    // switch
    switch ($i){
    case 0:
        echo "i eşittir 0";
        break;
    case 1:
        echo "i eşittir 1";
        break;
    case 2:
        echo "i eşittir 2";
        break;
    }

?>

switch ile dizge kullanımı

<?php

    switch ($i){
    case "elma":
        echo "i bir elmadır";
        break;
    case "çikolata":
        echo "i bir çikolatadır";
        break;
    case "kek":
        echo "i bir kektir";
        break;
    }

?>

Hatalardan kaçınmak için switch deyiminin nasıl çalıştığını anlamak önemlidir. switch deyimi satır satır ele alınır (aslında deyim deyim). Başlangıçta, hiçbir kod çalıştırılmaz. Yalnızca switch ifadesiyle birlikte verilen değer ile uyuşan case deyimi bulunduğunda PHP ilgili deyimleri çalıştırmaya başlar. PHP switch bloğu sonlanana kadar ya da ilk break deyimi ile karşılaşıncaya kadar çalışmasına devam eder. Bir case bloğunun sonuna break koymazsanız, PHP sonraki case deyiminden kodları çalıştırmaya devam eder. Örnek:

<?php

    switch ($i) {
    case 0:
        echo "i eşittir 0";
    case 1:
        echo "i eşittir 1";
    case 2:
        echo "i eşittir 2";
    }

?>

Burada, $i 0'a eşit ise, PHP tüm echo deyimlerini çalıştıracaktır! $i 1'e eşit ise, PHP son iki echo deyimini çalıştıracaktır! Beklediğiniz sonucu - 'i eşittir 2' metninin görüntülenmesi - yalnızca $i 2'ye eşitse almanız mümkün olacaktır. Bu durumun oluşmaması için, break deyimini kullanmayı unutmamanız önemlidir.

default durumu özel bir durumdur. Bu durum diğer hiçbir case ile uyuşmayan değerler için kullanılır ve en sonda yer almalıdır. Örneğin:

<?php

    switch ($i) {
    case 0:
        echo "i eşittir 0";
        break;
    case 1:
        echo "i eşittir 1";
        break;
    case 2:
        echo "i eşittir 2";
        break;
    default:
        echo "i ne 0, ne 1 ne de 2'ye eşittir";
    }

?>
Open in new window