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

  • Bach Vlogs

    Bach Vlogs

    18 HAZİRAN 2011
  • Rugiagialia

    Rugiagialia

    1 Ocak 2008
  • Vicious Computers

    Vicious Comp

    14 EKİM 2006