Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Debutant] Comparaison

16 réponses
Avatar
Pascale
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

6 réponses

1 2
Avatar
Olivier Masson

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.



C'est même plus pernicieux que ça car qd je trouve une fonction qui
ressemble à une autre, je me demande si je ne fais pas une grosse erreur
(de compréhension ou d'optimisation) en utilisant celle que je connais.

Avatar
Denis Beauregard
Le 25 Sep 2007 07:40:04 GMT, Pascale <chaton.tigre+
écrivait dans fr.comp.lang.php:

Denis Beauregard
écrivait news::

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.


J'avais pensé à un truc un peu dans ce genre : concaténer mes noms de pays
pour en faire un seul champ et rechercher ensuite si je retrouver ma chaîne
de caractères à l'intérieur. Mais j'ai eu peur de problèmes tels que ceux
que tu décris, même si ma liste de pays actuelle ne présente pas
d'ambiguïté.


Mon utilisation prévue est sans doute différente de la tienne.
Ce que j'avais en tête, c'est pour une liste de liens dans une
base de données, chaque lien appartenant à plusieurs catégories.

Avec mon truc, je pourrais par exemple avoir sur une ligne

;arseneaux;arsenault;arsenaud;arseno;

et trouver le lien avec plusieurs mots clés différents. Et ici, c'est
sans importance que la chaine soit trouvée en partie.

Pour une application de filtrage à partir d'une liste d'endroits, cela
est à double tranchant. D'un côté, à partir de Saint-Denis, je
trouverais Saint-Denis-sur-Richelieu, Saint-Denis de la Réunion,
Saint-Denis-le-Vêtu, Saint-Denis-de-L'Houmée com Beurlay
(Saint-Denis), etc. Donc, pour un moteur de recherche, c'est
acceptable et même préférable. D'un autre côté, à partir de
Paul*Champagne, je trouverais aussi Saint-Paul, Champagne mais
aussi ;Saint-Paul;Saint-Martin;Champagne sur Mer;

C'est une question d'utilisation que l'on veut en faire.

Une application réelle contiendrait par exemple
;F01;F26;F38; Pour France, départements 01, 26 et 38.


Denis


Avatar
Bruno Desthuilliers
(snip)
Gloups... un langage typé, ça veut dire quoi ?


Les experts ne sont pas encore parvenus à une définition définitive et
univoque à ce jour. Mais tout le monde ou presque s'accorde à considérer
qu'un langage qui considère que '1' == 1 n'a pas vraiment un typage fort
!-)

Avatar
Pascale
Olivier Masson écrivait
news:46fa3f4a$0$32751$:

C'est même plus pernicieux que ça car qd je trouve une fonction qui
ressemble à une autre, je me demande si je ne fais pas une grosse erreur
(de compréhension ou d'optimisation) en utilisant celle que je connais.


Aaaaaah... je me sens moins seule ! (-:

--
Pascale

Avatar
Pascale
Denis Beauregard
écrivait news::

[couic]


Je couique mais je te remercie pour l'explication très claire.

--
Pascale

Avatar
Pascale
Bruno Desthuilliers écrivait
news:46fc03b7$0$21518$:

Les experts ne sont pas encore parvenus à une définition définitive et
univoque à ce jour. Mais tout le monde ou presque s'accorde à considérer
qu'un langage qui considère que '1' == 1 n'a pas vraiment un typage fort
!-)


Arf© (o;

--
Pascale

1 2