|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour à tous,
Désolée si la question est niveau neuneu, mais je trouve pas la réponse. Je cherche simplement à savoir si une valeur se trouve parmi une liste. Je pourrais bien sûr écrire: if (($pays=='France') OR ($pays=='Allemagne') OR ($pays=='Italie) OR [...] .... Mais y a-t-il moyen d'abréger un peu(j'ai toute une liste de pays) ? J'ai essayé : if ($pays==('France' OR 'Allemagne' OR 'Italie')) mais comme je m'y attendais, ça ne marche pas. Je n'ai pas trouvé de réponse dans le manuel PHP... Y en a-t-il une? -- Pascale |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Le plus simple serait d'avoir les pays dans une table et de faire une
requete. Pascale a écrit : > Bonjour à tous, > > Désolée si la question est niveau neuneu, mais je trouve pas la réponse. Je > cherche simplement à savoir si une valeur se trouve parmi une liste. > Je pourrais bien sûr écrire : > > if (($pays=='France') OR ($pays=='Allemagne') OR ($pays=='Italie) OR [...] > > ... > Mais y a-t-il moyen d'abréger un peu (j'ai toute une liste de pays) ? J'ai > essayé : > > if ($pays==('France' OR 'Allemagne' OR 'Italie')) > > mais comme je m'y attendais, ça ne marche pas. > Je n'ai pas trouvé de réponse dans le manuel PHP... Y en a-t-il une ? |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Sur fr.comp.lang.php, Pascale s'est exprimé ainsi :
> if ($pays==('France' OR 'Allemagne' OR 'Italie')) > > mais comme je m'y attendais, ça ne marche pas. > Je n'ai pas trouvé de réponse dans le manuel PHP... Y en a-t-il une? Peut-être que cela correspond à l'attente (mais je ne sais pas si c'est le plus efficace pour répondre à la question) : http://www.php.net/manual/fr/function.in-array.php -- Stéphan Peccini Les photos : <URL:http://photonature.fr> Les Pyrénées : <URL:http://photonature.fr/pyrenees> Le blog : <URL:http://pyrenees.peccini.fr> |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Pascale a écrit :
> mais comme je m'y attendais, ça ne marche pas. > Je n'ai pas trouvé de réponse dans le manuel PHP... Y en a-t-il une ? > if ($pays==('France' OR 'Allemagne' OR 'Italie')) Une astuce consiste à utiliser un tableau : if(in_array($pays, array('France', 'Allemagne', 'Italie')) { /* code ici */ } ou encore d'utiliser la structure switch : switch($pays) { case 'France' : case 'Allemagne' : case 'Italie' : /* code ici */ break ; default: } Ça dépendra aussi de la logique qu'il y a derrière. -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Le 24/09/2007 17:14, Pascale a écrit :
> > Désolée si la question est niveau neuneu, mais je trouve pas la réponse. Je > cherche simplement à savoir si une valeur se trouve parmi une liste. > Je pourrais bien sûr écrire : > > if (($pays=='France') OR ($pays=='Allemagne') OR ($pays=='Italie) OR [...] > > [...] > Je n'ai pas trouvé de réponse dans le manuel PHP... Y en a-t-il une ? <http://fr2.php.net/switch> Contrairement au C, en PHP on peut faire un switch sur des chaînes de caractères. switch ($pays) { case 'France' : case 'Allemagne' : case 'Italie' : $continent = 'Europe'; break; case 'Niger' : case 'Nigéria' : $continent = 'Afrique'; break; default : echo "Ce pays n'est pas pris en compte"; $continent = null; break; } |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Stephan Peccini <stephan@photonature.fr> écrivait
news:u12ls4-mhe.ln1@photonature.fr: > Peut-être que cela correspond à l'attente (mais je ne sais pas si > c'est le plus efficace pour répondre à la question) : > http://www.php.net/manual/fr/function.in-array.php Oui oui et re-oui, le temps que ma question soit publiée j'étais tombée moi aussi sur in_array qui correspond parfaitement à ce que je veux. Pourtant j'avais bien cherché avant de poster... Merci à tous et je vous fais toutes mes excuses de vous avoir fait chercher pour rien. -- Pascale |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Le 24 Sep 2007 15:14:43 GMT, Pascale <chaton.tigre+spam@alussinan.org>
écrivait dans fr.comp.lang.php: >Bonjour à tous, > >Désolée si la question est niveau neuneu, mais je trouve pas la réponse. Je >cherche simplement à savoir si une valeur se trouve parmi une liste. >Je pourrais bien sûr écrire: > >if (($pays=='France') OR ($pays=='Allemagne') OR ($pays=='Italie) OR [...] > >... >Mais y a-t-il moyen d'abréger un peu(j'ai toute une liste de pays) ? J'ai >essayé : > >if ($pays==('France' OR 'Allemagne' OR 'Italie')) > >mais comme je m'y attendais, ça ne marche pas. >Je n'ai pas trouvé de réponse dans le manuel PHP... Y en a-t-il une? En plus du in_array proposé, il y a aussi les strstr et stristr http://ca.php.net/manual/fr/function.strstr.php if (!stristr(';France;Allemagne;Italie;',$i)) Un avantage, c'est de trouver un mot incomplet. Par exemple, cela trouverait allemagn. C'est aussi un inconvénient pour la même raison. Pour ce qui est de la vitesse, je pense que la différence est trop petite pour qu'on en tienne compte. Par contre, si la liste est très longue, le in_array serait préférable. À vous de voir. Denis |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Bonsoir/jour,
>Pourtant j'avais bien cherché avant de poster... S'il y a bien une caractéristique donnant un avantage énorme de PHP sur d'autres plateformes, c'est la richesse de ses API natives, en particulier les fonctions de gestion de strings et de tableaux. Il est rare qu'on ne dispose pas directement de ce dont on a besoin, au pire en combinant deux ou trois fonctions existantes. C'est à double tranchant, car il y a en a tellement qu'on s'y perd. Y compris des trucs inutilement compliqués comme par exemple array_walk(), qui permet de passer 5 bonnes minutes à se gratter le neurone devant le man en ne comprenant strictement rien à ce qu'on lit alors qu'un bête foreach() fait aussi bien le boulot. Là aussi, in_array() peut dans certains cas être remplacé par in array_key_exists() n'est qu'un bon vieux if(isset(...)) si on joue pas avec le NULL de php. Et si on a envie de se re-demander si php est ou non un langage typé, on peut jouer avec array_search(). a++; JG |
|
![]() |
| Outils de la discussion | |
|
|