2010-08-04 9 views
1

Un système scolaire a 30 écoles. Le code scolaire le plus bas est 298 et le plus élevé est 516. Pour chaque école, les mêmes processus seront appelés. L'approche que j'ai prise jusqu'ici peut être vue ci-dessous. Comment puis-je raccourcir ce code? Je vous remercie.Raccourcir un "pour/switch-case"

for ($i = 298; $i <= 516; $i++) 
{ 
    switch ($i) 
    { 
     case 298: 
     $c_sch = strval ($i) ; 
     // call a function 
     uf_mem_requester ($c_sch, $t_mem1, $t_mem2, $t_mem3, 
          $d_year, $d_datadate) ; 
     case 303: 
     // etc....etc..... 
     case 309: 
     // etc....etc..... 
     default: 
    } 
} 
+0

Y at-il un cas pour chaque code entre 298 et 516? – hookedonwinter

+1

Pourquoi testez-vous plus de 200 fois? –

+0

[Le paradigme FOR-CASE] (http://thedailywtf.com/Articles/The_FOR-CASE_paradigm.aspx) – NullUserException

Répondre

11

Je ne suis pas certain de comprendre. Est le switch parce que certains ID entre 298 et 516 n'existent pas?

Dans ce cas, je préfère

$school_ids = array(
    298, 300, 304, 312, 319, 320, 321, ....... all school IDs that actually exist 
); 

foreach (school_ids as $school) // a list of all IDs that exist 
{ 
    $c_sch = strval ($school) ; 
    uf_mem_requester ($c_sch, $t_mem1, $t_mem2, $t_mem3, d_year, $d_datadate); 
} 
+0

+1 pour m'avoir battu ... –

+3

+1 Ne pas itérer inutilement. – BoltClock

+0

et un autre pour la même raison :-) – GrandmasterB

2
$schoolCodes = array(304, 313 /* etc */); 
foreach($schoolCodes as $code { 
    $c_sch = strval ($code) ; 
    // call a function 
    uf_mem_requester ($c_sch, $t_mem1, $t_mem2, $t_mem3, 
         $d_year, $d_datadate) ; 
} 

Est-ce que vous vouliez dire?

+0

battu par Pekka – MrSoundless

+0

Eh bien, pas ce que je voulais dire, mais exactement ce dont j'avais besoin. Merci. – dave

2

Faire un tableau des codes scolaires:

$schoolCodes = array(298, 303, 309 ......); 
foreach($schoolCodes as $code) { 
    $c_sch = strval ($i) ; 
    uf_mem_requester ($c_sch, $t_mem1, $t_mem2, $t_mem3, $d_year, $d_datadate) ; 
    //and so forth... 
} 

Cela a le même effet exact de itérer les codes, mais il est plus efficace parce que vous ne avez pas besoin de boucle à travers les valeurs que vous n'avez pas besoin de, et il est beaucoup plus facile de mettre à jour les codes à travers un tableau que grâce à conditionnels. : D