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 :

Comparaison ardue de différents éléments d'un tableau


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut Comparaison ardue de différents éléments d'un tableau
    Bonjour à toutes et tous,

    Je suis engluée depuis 3h et j'ai besoin d'aide.
    Je vais tenter de vous expliquer mon problème le plus clairement possible.

    Voici le dump de $possibilities, qui est un tableau:

    Code : 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
     
    array (size=4)
      1 => 
        array (size=3)
          0 => string '96'
          1 => string '90'
          2 => string '91'
      2 => 
        array (size=3)
          0 => string '96'
          1 => string '90'
          2 => string '91'
      3 => 
        array (size=4)
          0 => string '96' 
          1 => string '90'
          2 => string '91'
          3 => string '98'
      4 => 
        array (size=4)
          0 => string '96'
          1 => string '90'
          2 => string '91'
          3 => string '98'
    Explications:

    • Dans la 1e dimension du tableau, les clés sont 1, 2, 3 et 4. Cela correspond à un numéro de tour: tour 1, tour 2, tour 3 et tour 4 donc.
    • Ensuite, pour chaque tour, il y a une 2e dimension de tableau, où 90, 91, 96 et 98 sont des ID


    Comme vous pouvez le voir, l'ID 98 n'est présent que dans 3 et 4. Cela signifie que je peux ajouter cet ID en base de données UNIQUEMENT dans le tour 3 ou 4.

    Je cherche donc à faire une comparaison, entre ces différents éléments, pour décider si ou on non je peux ajouter mon ID.

    Et je coince...

    Quelqu'un pourrait m'aider ?
    D'avance merci!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,
    pour récupérer les clés des tours contentant un sous tableau ayant pour valeur 98, tu peux faire array_search ou in_array:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $needle = 98;
    foreach( $possibilites as $tour => $value ){
        // le tableau $value contient 98
        if( array_search( $needle, $value ) !== false ){
            //faire un traitement d'ajout ici ou stocker la clé $tour dans un tableau
            echo $tour;
        }
     
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par caema Voir le message
    ...faire une comparaison, entre ces différents éléments...
    • comparer quoi ?
    • quels éléments ?
    • selon quel(s) critère(s) ?

    Soit tu montres d'autres "exemples" concrets, soit tu réfléchis un peu plus... et tu expliques mieux.

  4. #4
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    (Comme le dit si bien ta citation, je pose une question. Avec difficulté parce que c'est complexe a expliquer, j'essaye de ne pas donner 1000 details afin d'aller à l'essentiel, mais je fais de mon mieux..0

    Bon alors en guise d'éclaircissement, ce que je chercher à comparer, ce sont les valeurs présentes dans les différents tableaux.

    Code : 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
     
     
    array (size=4)
      1 => 
        array (size=3)
          0 => string '96'
          1 => string '90'
          2 => string '91'
      2 => 
        array (size=3)
          0 => string '96'
          1 => string '90'
          2 => string '91'
      3 => 
        array (size=4)
          0 => string '96' 
          1 => string '90'
          2 => string '91'
          3 => string '98'
      4 => 
        array (size=4)
          0 => string '96'
          1 => string '90'
          2 => string '91'
          3 => string '98'
    Enfin si tu veux du concret: j'ai un formulaire grâce auquel l'utilisateur peut s'inscrire à 4 workshops.
    Chaque workshop aura différents round > par exemple, le workshop ID 96 aura 4 rounds, mais le workshop ID 98 aura 2 rounds.
    Prenons le cas de ce fameux workshop 98, présent dans le array[3] et array[4] > cel signifie que cet ID 98 pourra être ajouté dans le round 3 ou 4.

    Mais.... Si je m'inscris pour le workshop 98, au round 4, je ne peux pas aller au workshop 96 round 4 > je dois choisir une autre round.

    est-ce plus clair ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Non.

    Et c'est certainement pour ça que tu tournes en rond depuis plusieurs heures...

  6. #6
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Bon, j'ai 4 workshops auxquels mon utilisateur doit s'insrire.
    Durant la journée, il y aura 4 tours:

    > tour 1 (de 8h a 10h)
    > tour 2 (de 10h a 12h)
    > tour 3 (de 13h a 15h)
    > tour 4 (de 15h a 10h)

    Le workshop 98 se deroule uniquement pendant le tour 3 ou le tour 4

    Je suis user: si je m'inscris pour le workshop 98 au tour 4, je ne pourrais plus choisir ce tour4 pour un autre workshop.
    Logique car je ne peux pas être a 2 tours au même moment.

    Donc en gros, je suis dans une boucle du style:

    foreach ($workshops as $workshop) {

    // Check les round disponibles pour chaque workshop
    // Attribue un round à chaque workshop
    }

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    et réorganiser tes données afin de pouvoir les attaquer différemment :
    Code : 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
    $data = [
        1 => ['96', '90', '91'],
        2 => ['96', '90', '91'],
        3 => ['96', '90', '91', '98'],
        4 => ['96', '90', '91', '98']
    ];
     
    // réorganisation des rounds par workshop 
    $workshop = []; // [id workshop => [round]]
    foreach ($data as $round => $idws) {
        foreach ($idws as $id) {
            if ( ! isset($workshop[$id])) {
                $workshop[$id] = [];
            }
            $workshop[$id][] = $round;
        }
    }

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

Discussions similaires

  1. Réponses: 27
    Dernier message: 22/02/2017, 20h55
  2. [XL-2007] Comparaison cellule excel avec élément dans tableau
    Par JulieD33 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2015, 10h57
  3. Réponses: 1
    Dernier message: 16/06/2008, 22h26
  4. Supprimer un élément d'un tableau
    Par CaptainChoc dans le forum Langage
    Réponses: 15
    Dernier message: 23/12/2002, 23h14
  5. Réponses: 3
    Dernier message: 16/12/2002, 16h12

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