Bonjour,
J'ai plusieurs conditions du type :
Y a t'il un moyen d'éviter de répéter le or $id_cat == .. ?Code:if ($id_cat == 46 or $id_cat == 47 or $id_cat == 48 or $id_cat == 49 or $id_cat == 53)
Merci
Version imprimable
Bonjour,
J'ai plusieurs conditions du type :
Y a t'il un moyen d'éviter de répéter le or $id_cat == .. ?Code:if ($id_cat == 46 or $id_cat == 47 or $id_cat == 48 or $id_cat == 49 or $id_cat == 53)
Merci
Bonjour,
une solution tableau :
Code:in_array( $id_cat , array(46, 49, 53) )
Sinon, moi j'aime bien le switch :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 switch($id){ case 18: case 20: case 30: echo 'ya bon'; break; default: echo 'ya pas bon'; }
Une autre possibilité (et certainement pas la dernière), avec strpos() :
Code:if(strpos('46-47-48-49-53', $id_cat) !== false)
ça marche pas ... mon script plante ! j'ai testé dans le code ci-dessous ...
Voilà la partie que je veux changer pour simplifier (peut-être inutilement ?)
Code:
1
2
3
4
5
6
7 $cache_v = array_slice($cache_select_donnees, 0,162,true); $cache_m = array_slice($cache_select_donnees, 163,81,true); $cache_t = array_slice($cache_select_donnees, 244,95,true); if (in_array($id_cat, array( 46,47,48,49,53,72))) $cache=$cache_v + $cache_t; //comme suggérer dans réponse forum elseif ($id_cat == 60 or $id_cat == 65 or $id_cat == 66 or $id_cat == 67 or $id_cat == 68 or $id_cat == 70 or $id_cat == 71) $cache= $cache_m + $cache_t; elseif ($id_cat == 52 or $id_cat == 54 or $id_cat == 55) $cache= $cache_v + $cache_t; else $cache= $cache_v + $cache_t;
Et que dit ton message d'erreur ?
Rien, page blanche, plus rien ... mais ça marche très bien avec les OR $id_cat == :roll:
Je pense que je vais laisser comme ça ...
Bonjour,
comme tu as plusieurs conditions (if...elseif...elseif...else), la solution de Dentrite avec switch() est tout-à-fait adaptée.
Et ça a l'avantage d'être lisible, donc facilement débogable.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 switch($id_cat){ case 46: case 47: case 48: case 49: case 53: case 72: $cache = $cache_v + $cache_t; break; case 60: case 65: case 66: case 67: case 68: case 70: case 71: $cache = $cache_m + $cache_t; break; case 52: case 54: case 55: $cache = $cache_v + $cache_t; break; default: $cache= $cache_v + $cache_t; }
en fait, tu as trop de conditions (4 pour 2 reponses!)
Code:
1
2
3 $cache= array_combine ($cache_v , $cache_t); // ou array_merge ?? if (in_array($id_cat, array( 60,65,66,67,68,70,71)) $cache=array_combine ($cache_m , $cache_t);