Switch o if

  • Creatore Discussione Creatore Discussione giusalvo
  • Data di inizio Data di inizio

giusalvo

Nuovo Utente
14 Ago 2012
25
1
3
MS
Saluti,
in base a degli anni, devo assegnargli un numero.
Per esempio:
1852, 1910, 1962, 2014 = 62
1859, 1911, 1963, 2015 = 167
1860, 1912, 1964, 2016 = 12

mi conviene usare lo switch l'if?
parto da qui:
...
$anno = date ("Y");
...

$conta_anno=0;

if ($anno =date("Y")=="1852,"1910","1962","2014"){
$conta_anno=62;
}
Grazie
 
ciao
in questo caso forse è meglio l'if elseif else rispetto allo switch, detto questo però molto dipende da quanti dati hai perchè nel caso
dell'if devi mettere molti OR, nello switch molti case
con gli if
PHP:
<?php
//...
$anno = date ("Y");
if($anno =="1852" || $anno =="1910" || $anno =="1962" ||$anno =="2014"){
    $conta_anno=62;
}elseif($anno =="1859" || $anno =="1911" || $anno =="1963" ||$anno =="2015"){
    $conta_anno=167;
}elseif($anno =="1860" || $anno =="1912" || $anno =="1964" ||$anno =="2016"){
    $conta_anno=12;
}else{
    $conta_anno=0;
}
//...
?>
con lo switch
PHP:
<?php
//...
$anno = date ("Y");
switch($anno){
    case "1852": $conta_anno=62;break;
    case "1910": $conta_anno=62;break;
    //...eccetera
    case: "2016": $conta_anno=12;break;
    default: $conta_anno=0;break;
}
//...
?>
oppure senza if o switch
PHP:
<?php
//creo un array
$periodo=("1852"=>62,"1910"=>62,"2016"=>12);//ho saltato gli intermedi
$anno=date ("Y");
if(isset($periodo[$anno])){//l'elemento esiste
    $conta_anno=$periodo[$anno];
}else{
    $conta_anno=0;
}
//...
?>
ma come detto tutto dipende da come saltano fuori i vari valori
 
secondo con un if fai meglio, se crei un array ben strutturato fai veloce e lo rendi facile da modificare/integrare
ad esempio una cosa del tipo

PHP:
// creo un array bidimensionale, dove la pos. 0 è sempre il valore che devo abbinare all'anno
$periodo[0] = [62,1852,1910,1962,2014];
$periodo[1] = [167,1859,1911,1963,2015];
$periodo[2] = [12,1860,1912,1964,2016];

$totP = count($periodo);
$anno = date('Y');

for($i=0; $i<$totP; $i++)
{
  if(in_array($anno, $periodo[$i]))
  {
  echo $periodo[$i][0];
  }
}

fammi sapere se ti è utile
 

Discussioni simili