PHP Dersleri 14 - Koşullar ( Switch-Case )
Bu dersimiz ile diğer bir koşul yapısı olan Switch-Case konusunu işliyoruz.
Bir switch ifadesi, aynı ifade içinde yer alan bir dizi IF ifadesi gibidir. Çoğu durumda, aynı değişkeni (veya 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 istersiniz. Switch ifadesi bunun içindir.
Bilginize: Diğer bazı dillerin aksine, continue deyimi, break'e benzer şekilde bir anahtarla uygulanabilir. Bir döngü içinde bir anahtar kullandıysanız ve kodun dış döngünün bir sonraki yinelemesi olmadan devam etmesini istiyorsanız, continue kullanabilirsiniz.
Aşağıda verilen iki örnek ile koşul yapıları kullanılmıştır. Bir örnek İf,else ile diğer örnek ise swicht-case ile kullanılmıştır.
<?php
// Bu switch deyimi:
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;
}
// bunlara eşdeğerdir:
if ($i == 0) {
echo "i eşittir 0";
} elseif ($i == 1) {
echo "i eşittir 1";
} elseif ($i == 2) {
echo "i eşittir 2";
}
?>
Hatalardan kaçınmak için switch ifadelerinin nasıl çalıştığını anlamak önemlidir. Bir switch deyimi satır satır işlenir (aslında koşul koşul ilerler.). Başlangıçta hiçbir kod çalışmaz. Yalnızca case koşulu, switch koşulu tarafından sağlanan değerle eşleştiğinde PHP ilişkili deyimi yürütmeye başlar. PHP, switch bloğu sona erene veya ilk break deyimiyle karşılaşılıncaya kadar çalışmaya devam eder. Bir case bloğunun sonuna bir kesme koymazsanız, PHP bir sonraki case ifadesinde kodu çalıştırmaya devam edecektir. örneklem:
<?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, eğer $i 0'a eşitse, PHP tüm koşulları yürütür! $i 1'e eşitse, PHP son iki koşulu yürütür! Yalnızca $i 2'ye eşitse, beklenen sonucu ("i eşittir 2" görüntüleme metni) alırsınız. Bundan kaçınmak için her zaman bir break ifadesi kullanmayı unutmayın (gerçi bazı durumlarda break ifadesi kullanmak istemeyebilirsiniz).
switch deyiminde koşul yalnızca bir kez sorgulanır ve sonuç her bir case koşulu ile karşılaştırılır. Elseif ifadesinde koşul yeniden kontrol edilir. Kullanmak istediğiniz koşullar basit bir karşılaştırmadan daha karmaşıksa ve/veya bir döngü içindeyse, bir anahtar kullanmak daha hızlı olabilir.
Bir case bloğu kod içermeyebilir ve amacı kontrolü bir sonraki vaka bloğuna geçirmektir.
<?php
switch ($i) {
case 0:
case 1:
case 2:
echo "i 3'ten küçüktür ama negatif değildir";
break;
case 3:
echo "i eşittir 3";
}
?>
default durumu özel bir durumdur. Bu durum, başka hiçbir durumla eşleşmeyen ve sonuna yerleştirilmesi gereken değerler için kullanılı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";
}
?>
Not : Çok sayıda default kullanırsanız e_compile_error hatası alabilirsiniz.