16-PHP Decision Making
Karar verme mekanizmaları denen yapılar bulunmaktadır. Bu programlamada olmazsa olmazlardandır, çünkü bazen öyle durumlar olur ki eğer bu böyle olmazsa o zaman diğer kod bloğu çalışsın gibi bunu yapmak için PHP de dahil çoğu programlama dilinde java,C# gibi karar verme yapıları kullanılır.
Yukarıda da görüldüğü gibi kod bloğu condition (şart) kısmına gelir ve eğer ki şart doğruysa şartın doğru kabul edildiği (conditional code) bloğu çalışır. Eğer ki şart yanlış ise aşağıdan itibaren farklı kod bloğu çalışmaktadır.
PHP'de Karar verme mekanizmaları için ;
- if..elseif..else
- switch ifadeleri kullanılmaktadır.
1. if..elseif..else ifadeleri
Süreç şöyle gerçekleşir eğer ki biz bir kod bloğumuzun gerekli bir şartı sağlarsa o zaman if bloğu yok başka bir şartı sağlarsa elseif bloğuna hiçbir şartı sağlamazsa else bloğuna girmesini sağlayabiliriz. Örneğin:
<?php
// NOT HARF UYGULAMASI
$myNote = 85;
if ($myNote >= 85) {
echo "Notunuz AA";
}elseif ($myNote >= 70) {
echo "Notunuz AB";
}elseif ($myNote >= 60) {
echo "Notunuz BB";
}else{
echo "Kaldınız!";
}
// TEK-ÇİFT UYGULAMASI
$myNumber = 12;
if ($myNumber % 2 == 0){
echo "Bu bir çift sayıdır.";
}else {
echo "Bu bir tek sayıdır.";
}
?>
2. switch ifadesi
Switch ifadesi de if..elseif..else ifadelerine benzer bir yapıdadır.Sadece değişkeninizin tek bir değerini kıyaslama yapmak isterseniz daha okunaklı görünebileceği için bu yapıyı kullanabilirsiniz.Aralarındaki farkı bir örnek üzerinde gösterelim.
<?php
$myNumber = 9900;
// IF-ELSE
if ($myNumber == 0){
echo "MyNumber is 0";
}elseif($myNumber == 1){
echo "MyNumber is 1";
}elseif($myNumber == 9900) {
echo "MyNumber is 9900";
}else{
echo "MyNumber is unknown";
}
// SWITCH CASE
switch($myNumber){
case 0:
echo "MyNumber is 0";
break;
case 1:
echo "MyNumber is 1";
break;
case 9900:
echo "MyNumber is 9900";
break;
default:
echo "MyNumber is unknown";
}
?>
Görüldüğü üzere ikiside benzer yapıdadır. Sadece switch içerisinde kullanılan break yapısına kısaca değinecek olursak; break eğer ki case 9900 yani bizim durumumuz içerisine girdiğinde "MyNumber is 9900" çıktıya verecektir ve daha sonrasında o kod bloğu yani switch case yapısından çıkacaktır. break yazmasaydık eğer aşağıdaki bütün kodları yani default'da bulunan "MyNumber is unknown" kodunu da ekrana yazmış olucaktı. Default yerine başka case'lerde yazsaydık eğer onları da output'a verecekti.