IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Peut-on réduire une condition à plusieurs 'OR' ?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Peut-on réduire une condition à plusieurs 'OR' ?
    Bonjour,
    J'ai plusieurs conditions du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($id_cat == 46 or $id_cat == 47 or $id_cat == 48 or $id_cat == 49 or $id_cat == 53)
    Y a t'il un moyen d'éviter de répéter le or $id_cat == .. ?

    Merci

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 076
    Points : 4 392
    Points
    4 392
    Par défaut
    Bonjour,

    une solution tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    in_array(  $id_cat , array(46, 49, 53)  )
    $moi= ( !== ) ? : ;

  3. #3
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Sinon, moi j'aime bien le switch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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';
     
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Une autre possibilité (et certainement pas la dernière), avec strpos() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(strpos('46-47-48-49-53', $id_cat) !== false)
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Bonjour,

    une solution tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    in_array(  $id_cat , array(46, 49, 53)  )
    ç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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Et que dit ton message d'erreur ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Rien, page blanche, plus rien ... mais ça marche très bien avec les OR $id_cat ==
    Je pense que je vais laisser comme ça ...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    comme tu as plusieurs conditions (if...elseif...elseif...else), la solution de Dentrite avec switch() est tout-à-fait adaptée.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
    }
    Et ça a l'avantage d'être lisible, donc facilement débogable.

  9. #9
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 076
    Points : 4 392
    Points
    4 392
    Par défaut
    en fait, tu as trop de conditions (4 pour 2 reponses!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
    $moi= ( !== ) ? : ;

Discussions similaires

  1. Appliquer une condition à plusieurs Label
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 16/07/2012, 13h07
  2. Peut-on réduire une sélection à ses x premiers enregitrements ?
    Par Sefrou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/01/2009, 01h21
  3. Bouton permettant de réduire une fenêtre contenant plusieurs frames.
    Par YOSAIKAN dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/12/2008, 20h18
  4. Test d'une condition sur plusieurs lignes
    Par pichto dans le forum Langage SQL
    Réponses: 9
    Dernier message: 23/05/2007, 10h19
  5. Peut on insérer une condition dans une requête ?
    Par MITCH31 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 22/09/2005, 19h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo