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

  • Howcast

    Howcast

    4 EKİM 2007
  • John Lynn

    John Lynn

    8 Ocak 2010
  • merumputdotcom

    merumputdotc

    24 ŞUBAT 2012