PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.php > [Debutant] Comparaison
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
[Debutant] Comparaison

Réponse
 
LinkBack Outils de la discussion
Vieux 24/09/2007, 16h14   #1 (permalink)
Pascale
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut [Debutant] Comparaison

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
  Réponse avec citation
Vieux 24/09/2007, 16h46   #2 (permalink)
Claude
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [Debutant] Comparaison

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 ?

  Réponse avec citation
Vieux 24/09/2007, 16h46   #3 (permalink)
Stephan Peccini
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [Debutant] Comparaison

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>
  Réponse avec citation
Vieux 24/09/2007, 16h46   #4 (permalink)
Mickael Wolff
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [Debutant] Comparaison

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
  Réponse avec citation
Vieux 24/09/2007, 16h46   #5 (permalink)
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [Debutant] Comparaison

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;
}
  Réponse avec citation
Vieux 24/09/2007, 18h28   #6 (permalink)
Pascale
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [Debutant] Comparaison

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
  Réponse avec citation
Vieux 24/09/2007, 18h49   #7 (permalink)
Denis Beauregard
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [Debutant] Comparaison

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
  Réponse avec citation
Vieux 24/09/2007, 19h25   #8 (permalink)
John GALLET
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [Debutant] Comparaison

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
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 11h20.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,18583 seconds with 16 queries