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 :

rech dans plusieur valeurs in_array multiple [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut rech dans plusieur valeurs in_array multiple
    Bonsoir,
    Je souhaite afficher un bout de css uniquement quand quelques conditions sont vrai.
    Cela fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     if (bp_is_active('profile') AND  (!in_array('membre1', $user_roles) ) ) { 
       	$output = '<style type="text/css">#woffice_cover_upload{display: none!important;}</style>';
       }
    Je voudrai l'étendre en excluant plusieurs rôles du genre : si dans cette catégorie AND pas membre1, pas membre2 ...
    Je pourrai l'étendre en me prenant un peu la tête de type cat ADN (!MEMBRE1 OU ! MEMBRE2 ...) mais je me demandais si je pouvais faire cela plus court comme (!in_array(array2, $user_roles)) avec array2='membre1, membre2 ...';

    Si c'était possible !?
    Merci
    @+

  2. #2
    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
    Si j'ai bien compris ton problème, tu veux comparer deux tableaux directs pour tester ce qui est présent dans le tableau 1 et pas dans le tableau 2 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $hommes=array('André','Marcel','Robert','Johnny','Hervé');
    $mixte=array('André','Julie','Marcel','Chantal','Robert','Anne','Françoise','Andrée');
    $femmes=array_diff($mixte,$hommes);
    foreach($femmes as $femme){
    	//traitement : on ne gardera que les prénoms féminins
           echo $femme.' est une femme.<br/>';
    }
    http://php.net/manual/fr/function.array-diff.php
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut
    [QUOTE=Dendrite;10117967]Si j'ai bien compris ton problème, tu veux comparer deux tableaux directs pour tester ce qui est présent dans le tableau 1 et pas dans le tableau 2 ?
    Merci pour ta réponse rapîde
    C'est presque çà. Le tableau à comparer (~3 items) est un sous-ensemble d'un tableau plus grand (~30 items).
    Cela ne fonctionne pas. J'ai du me tromper!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $user_roles = array('membre0','membre1', 'membre2','membre3', );
    	$output ='';
    	$roles_autorises=array('membre1','membre2');
    	$absents=array_diff($user_roles,$roles_autorises);
    	foreach($absents as $absent){
    		$output = '<style type="text/css">#woffice_cover{display: none!important;}</style>';
    	}

  4. #4
    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
    "Ca ne fonctionne pas" n'a pas grand intérêt et signifie souvent que la personne qui parle n'a pas activé ses messages d'erreur et code à l'aveugle.
    Je la vois ta faute, comme le nez au milieu de la figure. Mais je veux que tu actives tes messages d'erreur pour acquérir de l'autonomie.

    Par ailleurs, au passage, n'oublie pas ta condition de départ, qui encadre ta boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (bp_is_active('profile')){
    	foreach($absents as $absent){
    		$output .= '<style type="text/css">#woffice_cover{display: none!important;}</style>';
    	}
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    "Ca ne fonctionne pas" n'a pas grand intérêt et signifie souvent que la personne qui parle n'a pas activé ses messages d'erreur et code à l'aveugle.
    Je la vois ta faute, comme le nez au milieu de la figure. Mais je veux que tu actives tes messages d'erreur pour acquérir de l'autonomie.

    ]
    En fait cela fonctionne (à priori), cela devait être un problème de cache! L'erreur icidoit être probablement le fait que j’essayai de transposer en collant à l'exemple

    Bon je pense qu'il y a n'y a pas de grande différence de temps d’exécution mais au départ j'étais parti sur ce code simplifié qui ne fonctionnait pas (et pas msg d'erreur).
    Si tu vois l'erreur de syntaxe ou documentation car je ne suis pas vraiment un développeur php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if (  ( bp_is_active('xprofile') )  AND  ( !in_array(A) OR !in_array(B) )    )
    @+

  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
    Corrige déjà ce tableau, tu avais ajouté une virgule à la fin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $user_roles = array('membre0','membre1', 'membre2','membre3');
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Corrige déjà ce tableau, tu avais ajouté une virgule à la fin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $user_roles = array('membre0','membre1', 'membre2','membre3');
    En fait, comme je le disais j'ai simplifié et j'ai construit ce tableau à la main d'ou l'erreur
    Merci de ton aide

    Bon si toi ou qq d'autres pouvait me répondre sur la syntaxe dans le cas ou je veux juste rejeter 2 valeurs d'un tableau, cela ne sera pas plus rapide d’exécution mais ce serait peut-être un moins verbieux
    @+

  8. #8
    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
    Ben tout est dans le manuel PHP

    http://php.net/manual/fr/function.in-array.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(in_array('aiguille',$botte_de_foin)===false && in_array('carotte',$botte_de_foin)===false){
     
     
    }
    Tu te trompes de syntaxe... et d'opérateur logique. (ni...ni, c'est "et", pas "ou").
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  9. #9
    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
    Heu de rien !!!
    note pour plus tard : HerveD ne sait pas dire merci...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut
    Heu désolé
    EN général je remercie toujours même si je n'ai pas de réponse complète mais je n’avais pas testé. C'est le cas maintenant pour la 2ème solution (ainsi que la 1ère)
    Ce que j'ai fais hier c'est que j'avai voté sur chaque réponse mais je n'ai pas vu comment te remercier et t'attribuer des points
    MERCI

  11. #11
    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
    Je croyais que tu avais complètement oublié que des 2 côtés de l'ordi, ce sont des êtres humains. Ca va mieux, merci.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/12/2007, 14h56
  2. Réponses: 8
    Dernier message: 19/09/2006, 15h42
  3. [Excel] Total de valeurs dans plusieurs feuilles
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/01/2006, 12h25
  4. plusieurs valeur(s) dans l'url
    Par philippe123 dans le forum ASP
    Réponses: 6
    Dernier message: 04/08/2005, 09h08
  5. Plusieurs valeurs dans un value
    Par nebule dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2004, 10h58

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