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

+1

왜 200 번 이상 반복 하시겠습니까? –

+0

[FOR-CASE 패러다임] (http://thedailywtf.com/Articles/The_FOR-CASE_paradigm.aspx) – NullUserException

답변

11

잘 모르겠습니다. 298과 516 사이의 일부 ID가 없기 때문에 switch입니까?

이 경우

, 나는

$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 나를 때려 눕힌다 ... –

+3

+1 불필요하게 반복하지 마라. – BoltClock

+0

과 같은 이유로 또 다른 :-) – 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) ; 
} 

당신이 무엇을 의미인가요 선호?

+0

Pekka가 구타하다 – MrSoundless

+0

글쎄, 내 뜻은 아니지만 정확히 내가 필요한 것. 감사. – dave

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