Kullanmak mümkün mü | | PHP anahtarı?

5 Cevap php
switch ($foo)
    {
        case 3 || 5:
           bar();
        break;

        case 2:
          apple();
        break;
    }

Yukarıdaki kodda, ilk switch deyimi geçerlidir? Ben değeri $foo 3 veya 5 ise ya o bar() işlevini çağırmak istiyorum

5 Cevap

Sen anahtar ifadelerin yoluyla sonbaharında yararlanmak gerekir:

switch ($foo)
    {
        case 3:
        case 5:
           bar();
        break;

        case 2:
          apple();
        break;
    }

PHP man page sadece bu gibi bazı örnekler vardır.

Ben sana ne gerek düşünüyorum:

switch ($foo)
{
    case 3:
    case 5:
       bar();
    break;

    case 2:
      apple();
    break;
}

İlginçtir, Perl, satırlar boyunca bir şey bu sözdizimi getirerek (şimdi, ya da belki de vardır) olduğunu duydum:

if ($a == 3 || 5)

Ben sözcük Parsers biraz yazmak zorunda kalmıştım beri sözdizimi big hayranı değilim ve dilleri mümkün olduğunca kesin olması gerektiğine inanıyoruz. Ama sonra, Perl yüzden :-) onunla hiçbir sorun orada olacağım sanıyorum o iğrenç kuyruk tarafı if s ve or s ile daha önce sorunlar tüm bu türlü çözmüştür

Bunun yerine, switch tabloların temel avantajlarından birini kullanın:

switch($foo) {
    case 3:
    case 5:
        bar();
        break;

    case 2:
        apple();
        break;
}

Evet, ne orada var eşdeğerdir düşünüyorum:

    <?php

    $foo = 5000 ;

    switch( $foo )
    {
      case true :   // Gzipp:  an '=='-style comparison is made
        echo 'first one' ; // between $foo and the value in the case
        break;             // so for values of $foo that are "truthy"
                           // you get this one all the time.

      case 2:
        echo 'second one';
        break;

      default:
        echo 'neither' ;
        break;
    }

    ?>

Hayır, case 3 || 5:, o zaman sen de ne istediğini kesinlikle değildir ki, case True: yazabilir yazdı. Ancak birbirleriyle doğrudan altına harf ifadeleri koyabilirsiniz:

switch ($foo)
    {
        case 3:
        case 5:
           bar();
        break;

        case 2:
          apple();
        break;
    }