2010-08-04 74 views
1

学校系统有30所学校。最低的学校代码是298,最高的是516.对于每所学校,都会调用相同的流程。我目前采取的方法可以在下面看到。我怎样才能缩短这段代码?谢谢。缩短“for/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

298和516之间的每个代码是否存在? – hookedonwinter 2010-08-04 17:52:08

+1

为什么你迭代200次? – 2010-08-04 17:54:37

+0

[FOR-CASE范式](http://thedailywtf.com/Articles/The_FOR-CASE_paradigm.aspx) – NullUserException 2010-08-04 18:15:23

回答

11

不知道我明白了。是switch,因为298和516之间的某些ID不存在?

在这种情况下,我宁愿

$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打我吧... – 2010-08-04 17:53:08

+3

+1不要不必要地迭代。 – BoltClock 2010-08-04 17:54:30

+0

和另一个出于同样的原因:-) – GrandmasterB 2010-08-04 17:54:49

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) ; 
} 

那是你的意思?

+0

殴打Pekka – MrSoundless 2010-08-04 17:54:52

+0

嗯,不是我的意思,而是我所需要的。谢谢。 – dave 2010-08-05 01:06:39

2

使学校代码数组:

$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... 
} 

这有通过代码迭代完全相同的效果,但它的效率更高,因为你不通过你不任何值需要循环需要,并且通过通过条件的数组更容易更新代码。 :D