SORU
21 AĞUSTOS 2009, Cuma


En iyi ihtimalle başına birden fazla değer ile PHP bir geçiş yapmak için bir yol?

Nasıl bu PHP switch deyimi ister misin?

Ayrıca bu kadar küçük versiyonları olduğunu unutmayın, oluşturmak için gereken 1 çok şey olacak daha fazla değer eklenir.

Sürüm 1:

switch ($p) { 
    case 'home': 
    case '': 
    	$current_home = 'current';
    break; 

    case 'users.online': 
    case 'users.location': 
    case 'users.featured': 
    case 'users.new': 
    case 'users.browse': 
    case 'users.search': 
    case 'users.staff': 
    	$current_users = 'current';
    break;

    case 'forum': 
    	$current_forum = 'current';
    break; 
}

2. Sürüm

switch ($p) { 
    case 'home': 
    	$current_home = 'current';
    break; 

    case 'users.online' || 'users.location' || 'users.featured' || 'users.browse' || 'users.search' || 'users.staff': 
    	$current_users = 'current';
    break;

    case 'forum': 
    	$current_forum = 'current';
    break; 
}

GÜNCELLEME - Testi Sonuçları

10,000 yineleme, bazı Hız Testi yaptım

Notdatetime1: 0.0199389457703 // if ifadeleri< / ^ br . Time2: //0.0389049446106 açıklamaları geçin< / ^ br . Time3: 0.106977939606 // Diziler

CEVAP
21 AĞUSTOS 2009, Cuma


Bilinmeyen bir dize, herhangi bir durum ve bir grup anlamaya ihtiyacımız vardiğerkadar uyuyor, tek çözüm daha fazla öğe eklemek gibi yavaş vermiyor dizeleri bir dizi kullanın, ama anahtarları gibi tüm olası dizeler. Böylece switch aşağıdaki ile değiştirilebilir:

// used for $current_home = 'current';
$group1 = array(
        'home'  => True,
        );

// used for $current_users = 'current';
$group2 = array(
        'users.online'      => True,
        'users.location'    => True,
        'users.featured'    => True,
        'users.new'         => True,
        'users.browse'      => True,
        'users.search'      => True,
        'users.staff'       => True,
        );

// used for $current_forum = 'current';
$group3 = array(
        'forum'     => True,
        );

if(isset($group1[$p]))
    $current_home = 'current';
else if(isset($group2[$p]))
    $current_users = 'current';
else if(isset($group3[$p]))
    $current_forum = 'current';
else
    user_error("\$p is invalid", E_USER_ERROR);

Bu* *6, Bir kadar temiz görünmüyor amahızlıfonksiyonları ve sınıfların küçük bir kütüphanesi derli toplu tutmak için dahil değil çözüm. Hala çok kolay diziler için öğeleri ekleyin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • RaverX DouBle StAg XI

    RaverX DouBl

    23 Mayıs 2008
  • technodromeband's channel

    technodromeb

    28 NİSAN 2011