Php'de Switch Case yapısı

Kodla Büyü

komodor64

Seçkin Üye
Seçkin Üye
Mesajlar
336
PHPde 0 ile 25 arasındaki puanı bir aldınız şeklinde yazdırmak istiyroum. Bu işlem için switch case yapısını nasıl kullanmam gerekiyor. Yani aralıklı değerler için bu yapı nasıl kullanılıyor.
 
örneğin bir öğrenci sınavdan 0 ile 25 arası aldığında 0, 25 ile 44 arasında aldığında 1 ............... şeklinde giden yapıyı switch case kullanarak yapmak istiyroum.
 
hocam bu örnek işine yarar inşallah.

<?php
$ort=0;
switch ($ort) {
case ($ort>=0 && $ort<25) :echo "0";break;
case ($ort>=25 && $ort<45) :echo "1";break;
case ($ort>=45 && $ort<55) :echo "2";break;
case ($ort>=55 && $ort<70) :echo "3";break;
case ($ort>=70 && $ort<85) :echo "4";break;
case ($ort>=85 && $ort<=100) :echo "5";break;

default;echo "Yanlış Değer Girdiniz...";
}

?>
 
Hocalarım yukarıdaki soruda eğer $ort değeri "0" ise ekrana 1 yazdırıyor. Buna benzer bir problemde aşağıda yazdığım programda da mevcut. Problem $i değişkeninin değeri 0 olduğunda Ekrana "A" harfini yazdırıyor. .. Problem nereden kaynaklanıyor ... :cry:

<?php
//$i=rand(0,100);
$i=0;
switch($i)
{
case $i>89:
echo $i." A";
break;

case $i>79:
echo $i." B";
break;

case $i>69:
echo $i." C";
break;

case $i>59:
echo $i." D";
break;

default:
echo $i." F";
break;
}
?>
 
sayın @ercan_kefken hocam : switch ¶

switch deyimi, aynı ifade içersinde 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 istersiniz. İşte bu, switch deyiminin varlık sebebidir.

Bilginize: Başka bazı dillerden farklı olarak, continue deyimi switch ile uygulanabilir ve break ile benzerlik gösterir. Bir döngü içerisinde switch kullandıysanız ve kodun yürütülmesine dıştaki döngünün sonraki yinelemeden devam etmesini istiyorsanız, continue 2 kullanabilirsiniz.
Bilginize:
switch ve case gevşek karşılaştırma yapar.
kaynak :http://php.net/manual/tr/control-structures.switch.php
http://php.net/manual/tr/types.comparis ... ions-loose

bir aralık karşılaştırmak için switch pek tercih edilen bir şekil değildir. hele ki switch içine yazdığımız parametreyi yine case içinde değerlendireceksek.
kaynaklarda ikinci link içeriği için de php.net gevşek karşılaştırma ifadesi kullanmış.

yine de sizin istediğiniz gibi yapıyorsanız da büyükten değil küçükten başlatıp deneme yapabilirsiniz ama "0" değeri için belirsiz sonuç vermesi olası.
 
Eyvallah hocam,
Bende bu soruyu if ile yaptırdım arkadaşlara.
Sonra aynı soruyu switch kullanarak yapmalarını istemiştim ama böyle bir şey ile karşılaştım.
Yardımlarınız için Teşekkür ettim :)
 
bugün bir arkadaşar şu $i=0 olayını konuçtuk o da benim gibi düşünüyor switch yapısı buna uygun değil. hatta switch true false üzerine çalıştığı için 0 değeri gelince bit olarak işlemeye başlıyor ve 89 değerinin bit değeriyle karşılaştırıyor olabilir diye de ekledi. mantıklı bitsel karşılaştırmalar bir dönüp bakmak lazım
 
Geri
Üst