Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Switch - Case kullanımı

Konu, 'PHP' kısmında dehamurat tarafından paylaşıldı.

  1. dehamurat

    dehamurat Üye

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    88
    Beğenilen Mesajlar:
    0
    Merhaba,
    Kod:
    <?
    switch ($puan) {
     case 0..2		: echo "kare1.gif"; break;
     case 3..4		: echo "kare2.gif"; break;
     case 5..6		: echo "kare3.gif"; break;
     case 7..8		: echo "kare4.gif"; break;
     case 9..10		: echo "kare5.gif"; break;
    
     default; echo "kare3.gif";
    }
    ?>
    gibi bir yapı kullanmak istiyorum ancak hatayı aşamadım. Böyle bir yapıyı tanımıyor php.

    Aslında yapmak istediğim kesirli sayı kontrolüydü ancak onda hata verince tam sayıları denedim ancak yine aynı hata ile karşılaşıyorum.

    İyi çalışmalar...
     
  2. perlci

    perlci Daimi Üye

    Kayıt:
    12 Eylül 2004
    Mesajlar:
    2,298
    Beğenilen Mesajlar:
    0
    PHP:
    <?
    switch (
    $puan) {
     case 
    0        : echo "kare1.gif"; break;
     case 
    1        : echo "kare1.gif"; break;
     case 
    2        : echo "kare1.gif"; break;
     case 
    3        : echo "kare2.gif"; break;
     case 
    4        : echo "kare2.gif"; break;
     case 
    5        : echo "kare3.gif"; break;
     case 
    6        : echo "kare3.gif"; break;
     case 
    7        : echo "kare4.gif"; break;
     case 
    8        : echo "kare4.gif"; break;
     case 
    9        : echo "kare5.gif"; break;
     case 
    10        : echo "kare5.gif"; break;

     default; echo 
    "kare3.gif";
    }
    ?>
    Ancak böyle yazarsan kullanabilirsin.
     
  3. nopel

    nopel Üye

    Kayıt:
    29 Nisan 2006
    Mesajlar:
    53
    Beğenilen Mesajlar:
    0
    PHP:
    <?
    switch (
    $puan) {
        case 
    : case : case :   echo 'kare1.gif'; break;
        case 
    : case :            echo 'kare2.gif'; break;
        case 
    : case :            echo 'kare3.gif'; break;
        case 
    : case :            echo 'kare4.gif'; break;
        case 
    : case 10 :           echo 'kare5.gif'; break;
        
        default;                     echo 
    'kare3.gif';
    }
    ?> 
    Böylede kullanılabilir sanırım.
     
  4. cappytoi

    cappytoi Daimi Üye

    Kayıt:
    15 Haziran 2003
    Mesajlar:
    2,745
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci (halen)
    Şehir:
    Ankara
    ya da

    PHP:
    <?
    switch (
    $puan) {
    case 
    0        
    case 
    1        :
    case 
    2        : echo "kare1.gif"; break;
    case 
    3        
    case 
    4        : echo "kare2.gif"; break;
    case 
    5        
    case 
    6        : echo "kare3.gif"; break;
    case 
    7        
    case 
    8        : echo "kare4.gif"; break;
    case 
    9        
    case 
    10        : echo "kare5.gif"; break;

    default: echo 
    "kare3.gif";
    }
    ?> 
     
  5. emrag

    emrag Aktif Üye

    Kayıt:
    31 Mart 2006
    Mesajlar:
    251
    Beğenilen Mesajlar:
    0
    Şehir:
    denizli
    en uygunu bu şekilde kullanman. aralığı daha büyük sayılarla işlem yaparken işini kolaylaştırır.

    PHP:
    switch ($puan) {
     case (
    $puan '0' && $puan <= '2')    : echo "kare1.gif"; break;
     case (
    $puan '2' && $puan <= '4')    : echo "kare2.gif"; break;
     case (
    $puan '4' && $puan <= '6')    : echo "kare3.gif"; break;
     case (
    $puan '6' && $puan <= '8')    : echo "kare4.gif"; break;
     case (
    $puan '8' && $puan <= '10'): echo "kare5.gif"; break;
     
     default; echo 
    "kare3.gif";
    }
     
  6. Myxomatose

    Myxomatose Aktif Üye

    Kayıt:
    3 Temmuz 2006
    Mesajlar:
    388
    Beğenilen Mesajlar:
    0
    case deyimi bir kontrol ifadesine göre de işlem yapabiliyorsa, emrag'ın dediği gibi birşey yapabilirsin ya da belirli sayılar arasını kontrol edecek özel bir fonksiyon yazıp function(0, 2) şeklinde kullanabilirsin.
     
  7. Guardian

    Guardian Üye

    Kayıt:
    11 Ekim 2005
    Mesajlar:
    199
    Beğenilen Mesajlar:
    0
    ya da :) (devam ettirelim)
    PHP:
    if ($puan '0' && $puan <= '2')   {
    echo 
    "kare1.gif";
    }
    elseif (
    $puan '2' && $puan <= '4') {
    echo 
    "kare2.gif"
    }
    elseif (
    $puan '4' && $puan <= '6') {
    echo 
    "kare2.gif"
    }
    elseif (
    $puan '6' && $puan <= '8') {
    echo 
    "kare3.gif"
    }
    elseif (
    $puan '8' && $puan <= '10') {
    echo 
    "kare4.gif"
    }
    else
    echo 
    "kare3.gif"
    }
    default'u 0-10 arası girdilerde bulunulmadığı zaman olarak kabul eder..
     
  8. DarkElder

    DarkElder Üye

    Kayıt:
    19 Şubat 2006
    Mesajlar:
    121
    Beğenilen Mesajlar:
    0
    Meslek:
    Yazılım Mühendisi
    Şehir:
    İstanbul
    yada
    PHP:
    <?
    switch ( 
    ceil($puan/2) )
    {
        case 
    :
        case 
    : echo 'kare1.gif'; break;
        case 
    : echo 'kare2.gif'; break;
        case 
    : echo 'kare3.gif'; break;
        case 
    : echo 'kare4.gif'; break;
        case 
    : echo 'kare5.gif';break;
        default; echo 
    'kare3.gif';

    ?>
     
  9. dehamurat

    dehamurat Üye

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    88
    Beğenilen Mesajlar:
    0
    Arkadaşlar verdiğiniz cevaplar için çok teşekkürler. Cevaplara baktımda istediğim gibi kullanımın olmadığını gördüm malesef. Aslında istediğim kullanım yolunu diğer programlama dillerinde kullandım ve çok daha kolaylaştırıyordu işimi. Bu şekilde if yada case' i uzatarak işlem yapmak istemediğim için sordum ve birçok yolda denedim aslında. Cevaplarınızda gösterdiki bunun çözümü uzun yoldan geçiyor :(
     
  10. perlci

    perlci Daimi Üye

    Kayıt:
    12 Eylül 2004
    Mesajlar:
    2,298
    Beğenilen Mesajlar:
    0
    Yukarıdaki örnekler en kısa yoldur. Bunun bir sakıncası varmı yada kullandığın karşılaştırma çokmu fazla. Ben bir anlam veremedim.
     
  11. stripe1916

    stripe1916 Üye

    Kayıt:
    9 Kasım 2004
    Mesajlar:
    95
    Beğenilen Mesajlar:
    0
    daha kısasını yazarsan buraya koy biz de faydalanalım :D
     
  12. Yns

    Yns Daimi Üye

    Kayıt:
    3 Ekim 2004
    Mesajlar:
    2,848
    Beğenilen Mesajlar:
    0
    Ornek verebilir misin?
     
  13. dehamurat

    dehamurat Üye

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    88
    Beğenilen Mesajlar:
    0
    Merhaba,

    Kullandığım karşılaştırma çok fazla değil aslında. Ancak fazla olabilecek durumlara karşı kesin bi çözümden bahsediyordum. 50 tane if yada case yazmak yerine (ki bu kadar şartı nerede kullanacaksın diyebilirsiniz) "1..10" gibi bi kullanımdan bahsediyordum. Bu yapı (1..10 gibi) pascal ve delphide daha önce kullandığım bi karşılaştırmaydı. Anlatnak istediğim nokta :
    PHP:
    switch ($deger) {
    case 
    1..10    
    case 
    11..20  
    case 
    21..30  :
    .
    .
    .
    default;
    }
    gibi bir yapının bulunmayışıydı.

    İyi çalışamalar...
     
  14. cappytoi

    cappytoi Daimi Üye

    Kayıt:
    15 Haziran 2003
    Mesajlar:
    2,745
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci (halen)
    Şehir:
    Ankara
    5. ci post yazım olarak istediğini vermese de, çözüm olarak gayet net bir şekilde istediğini veriyor...
     
  15. Yns

    Yns Daimi Üye

    Kayıt:
    3 Ekim 2004
    Mesajlar:
    2,848
    Beğenilen Mesajlar:
    0
    Anladım, buna benzer bir synax perl'de de var; Ornegin bu isi yapan PERL kodu:

    Kod:
    use Switch;
    
    $val = 15;
    switch ($val) {
        case [1.. 10] { print "1 ile 10 arasinda" }
        case [10.. 20] { print "10 ile 20 arasinda" }
    }
    
    Lakin, PHP'de boyle bir yazim sekli yok, en kolay olarak emrag'in gosterdigi( alt ve ust sinir belirlemek ) sekilde yapilabilir.
     
  16. dehamurat

    dehamurat Üye

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    88
    Beğenilen Mesajlar:
    0
    Merhaba,

    @cappytoi evet belirttiğin mesaj istediğimi çözüm olarak karşılıyor. Acaba yazım değişebilirmi diye düşünmüştüm ancak bu şekilde de işimi görüyor.

    Emeği geçenlere teşekkürler,
    İyi çalışmalar...
     
  17. Tutastes

    Tutastes Aktif Üye

    Kayıt:
    2 Kasım 2009
    Mesajlar:
    280
    Beğenilen Mesajlar:
    0
    Meslek:
    uydu anten sistemleri
    Şehir:
    İst
    Ben bu kodu kullanmak istedim ama hiçbir şey göndermeden ilk case deki kare1.gif veriyor neden?
     
  18. hakanzn

    hakanzn Üye

    Kayıt:
    11 Ekim 2011
    Mesajlar:
    249
    Beğenilen Mesajlar:
    0
    nasıl kullanmak istediğini bilmiyorum ama öncesinde $puan=5; şeklinde bir değişken tanımlarsan mesela, kare3.gif cıkar. çünkü üçüncü duruma uymuştur