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

  • Glyn Dewis

    Glyn Dewis

    25 AĞUSTOS 2007
  • Shon Gonzales

    Shon Gonzale

    5 EKİM 2014
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008