Bir anahtarı içinde döngü için kullanmak mümkün mü?

6 Cevap php

Ben aşağıdaki gibi bir şey çalışılıyor:

 switch ($p) {
    foreach ($modules as $m) {
    case '"'.$mod.'"':
    include 'modules/'.$m.'/cases.php';
    break;
    }
 }

ama o iş için alınamıyor. Bir anahtarı içinde, bu şekilde döngü için kullanmak mümkün mü?

6 Cevap

Ben öyle düşünmüyorum ...

Temel ve daha kısa çözüm:

foreach($modules AS $m) {
    if($p == $m) {
        include 'modules/'.$m.'/cases.php';
        break;
    }
}

ama iyi olurdu:

if(in_array($p, $modules))
    include 'modules/'.$p.'/cases.php';

Yes and No

Sen switch dışında veya case seçicinin içinde foreach taşımak gerekir. () Anahtarı bile neden gerekli olduğunu ben emin değilim. Neden sadece bir anahtar aracılığıyla çalıştırmadan her modül için ne yapmak değil mi?

Ve en dilleri iç bloklar içine atlamak izin vermeyin. Onlar yapmak bile, iyi bir uygulama değil.

Duff's device çeşit gibi görünüyor - ama ben o C dışında herhangi bir yerde yasal olduğunu sanmıyorum

Eğer $ p $ modülleri olup olmadığını belirlemek ve bu yüzden, bunu eklerseniz, bir switch ifadesi daha bunu yapmak için daha iyi bir yolu muhtemelen var gibi bir şey yapmak isteyen ediyorsanız.

Kesinlikle bir anahtar içinde bir döngü kullanabilirsiniz. Ancak, orada yapmak için çalışıyoruz ne yapamaz; sadece çalışmıyor. Ve ben de buna herhangi bir nokta görmüyorum. Neden sadece anahtar olarak modül isimleri ile bir dizi var, ve sonra yapmayacağım

if ($modules[$p]) {
  include $modules[$p];
} else {
  // not found...
}

ya da bu yönde bir şey?

Ben böyle bir şey yapabileceğimi sanmıyorum: derhal bir switch deyimi, kullanabileceğiniz tek şey bir case veya bir default deyimi.

Yani alıyorsanız hata btw, size söylüyorum budur:

Parse error: syntax error, unexpected T_FOREACH, expecting T_CASE or T_DEFAULT or '}'

Eğer bir döngü ve bir SWIFT istiyorsanız, bir case ifadesi "etrafında" bütün switch ifadesi, ya da "iç" döngü koymak ya var olacak.