Switch o if

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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
 

Rikk73

Utente Attivo
7 Apr 2015
139
6
18
Arezzo
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
Autore Titolo Forum Risposte Data
L Menù con switch case C/C++ 1
D Ragionamento Switch Case Javascript 1
Y jQuery Animation Switch On Off jQuery 0
A Router e Switch Reti LAN e Wireless 0
N [WordPress] Switch lingua sito WordPress 0
K [Java] aiuto switch case Java 1
N Configurare rete con 1 switch e 2 router Reti LAN e Wireless 0
S problema switch poe IP Cam e Videosorveglianza 0
elpirata [PHP] Sostituire if ed elseif con operatore ternario switch PHP 9
F Problema switch di pagina jQuery 1
F Switch Popup jQuery 0
A Cambiare Risposta onclick con Switch. Javascript 1
filomeni Switch in cascata Reti LAN e Wireless 22
W Problema switch PHP 1
I Problema switch Reti LAN e Wireless 2
alankanz switch case con explode PHP 1
Z Switch ES-1528 managed Reti LAN e Wireless 2
L uso di switch PHP 2
Jonn Sito web Multilingua con Switch e link concatenanti PHP 8
V Connessone switch PoE Reti LAN e Wireless 3
F estrazione dal db con switch di pagina PHP 1
Erzsébeth Switch errato PHP 2
Komix $_GET e switch, problema di stampa PHP 4
R switch che non funziona con select $_session PHP 3
C scelta switch Reti LAN e Wireless 2
I Switch PHP 12
minatore switch che non funziona PHP 5
D Script con switch case e while PHP 2
SolidSnake4 info su switch in php PHP 1
B bug con switch su float PHP 5
D come utilizzare lo switch...? PHP 2
W Problema switch case e $_GET PHP 0
T Problema switch PHP 3

Discussioni simili