Сокращение «для / переключения» - PullRequest
1 голос
/ 04 августа 2010

Школьная система насчитывает 30 школ. Самый низкий школьный код - 298, а самый высокий - 516. Для каждой школы будут называться одинаковые процессы. Подход, который я использовал до сих пор, можно увидеть ниже. Как я могу сократить этот код? Спасибо.

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:
   }
}

Ответы [ 3 ]

11 голосов
/ 04 августа 2010

Не уверен, что понимаю.Является ли switch, потому что некоторые идентификаторы между 298 и 516 не существуют?

В этом случае я бы предпочел

$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);
}
2 голосов
/ 04 августа 2010

Составьте массив школьных кодов:

$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

2 голосов
/ 04 августа 2010
$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 ) ;
}

Это то, что вы имели в виду?

...