2010-08-04 76 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