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 :

[Tableaux] Comparaison de 2 tableaux


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Points : 166
    Points
    166
    Par défaut [Tableaux] Comparaison de 2 tableaux
    Bonjour,

    J'ai un souci et je vois pas comment m'en sortir. J'aimerais donc vos idées et conseils. Je vous explique :
    J'ai deux tableaux de meme taille et je voudrais les comparer membres a membres seulement la ou je butte c'est que les clés de chaques tableaux ne sont pas identiques.

    j'avais pensé mais
    - Deux boucles imbriqués ne vont pas me faire du membre a membre
    - une boucle l'indice ne va pas passer par toutes les clés

    un ex :
    Array1 = [clé1=> 1, clé2=> 1]
    Array2 = [clé1=>1, clé3=> 2]
    Et je cherche donc a les comparer a voir quand il sont differents mais membres a membres

  2. #2
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Essaie ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    foreach ($array1 as $ar1)
    {
       foreach($array2 as $ar2)
       {
          if($ar1==$ar2)
          {
             //Ton code
          }
       }
    }

  3. #3
    Membre habitué
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Points : 166
    Points
    166
    Par défaut
    merci de ta reponse, j'y avais pensé seulement sauf erreur de ma part...
    Il va comparer :
    1er valeur 1er tableau avec toutes celles du second, puis
    2e valeur 1er tableau avec toutes celles du second ainsi de suite.

    Seulement moi je dois comparer
    1ere valeur 1er tableau avec 1er valeur 2e tableau, puis
    2e valeur 1er tableau avec 2e valeur 2e tableau, ainsi de suite

    Sachant que je peux avoir des doublons, que les clés sont differentes et surtout que j'ai php 4.2.0 donc array_diff_assoc pas pour moi

    eu pour le foreach ton $ar1 correspond a la valeur c'est bien ca ?

  4. #4
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Ah OK, j'avais pas compris ça comme ça, excuse moi,

    Bon, à ce moment là, c'est pas trop compliqué, tu utilises le même index pour tes deux tableaux et tu compares les valeurs retournées.

    Par exemple (fonctionne si tes deux tableaux ont le même nombre d'éléments):


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $nb_elts=count($array1);
     
    for($i=0; $i<$nb_elts; $i++)
    {
       if($array1[$i]==$array2[$i])
       {
          //Ton code
        }
    }
    Mais là, on ne gère pas encore les doublons.

    Dis moi déjà, si j'ai compris cette fois et si c'est ce que tu cherches à faire?

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    http://php.net/array-diff et consors...

  6. #6
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Citation Envoyé par Mr N.
    http://php.net/array-diff et consors...
    Je ne connaissais pas cette fonction, encore une fois, merci Mr N.

  7. #7
    Membre habitué
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Points : 166
    Points
    166
    Par défaut
    arf je dois mal m'exprimer désolé de te faire perdre ton temps...
    En fait, dans ce cas la ca va comparer

    | tab1 | tab 2|
    |-------|------|
    clé |
    1 | 1
    2 | ""
    "" | 3
    or si tu veux les clés etant differentes je dois comparer cases a cases et je sais pas sur quoi m'appuyer y a rien pour ca

    enfin si je trouve la solution je la mettrai car ca a pas l'air simple ou alors faut que j'arrete de bosser ^^

  8. #8
    Membre actif

    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 264
    Points
    264
    Par défaut
    Il suffit de lire la doc... PHP a un avantage que beaucoup ignorent : C'est le language le mieux documenté du monde !!!

  9. #9
    Membre habitué
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Points : 166
    Points
    166
    Par défaut
    eu j'ai mon manuel d'aide sur le pc ouvert juste au cas ou je cherche toujours avant pour pas ennuyer les gens

    mais j'arrive pourtant pas a faire ce que je veux mais bon merci quand même

  10. #10
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Points : 425
    Points
    425
    Par défaut
    Salut,

    Je sais que c'est un vieux sujet mais j'ai été confronté au même problème, j'avais donc deux tableaux que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a = array(1,2,3);
    $b = array(2,3);
    qu'il me fallait comparer, or en général on compare sur les indexes des tableaux mais dans ce cas c'est impossible puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Array de a
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )
     
    Array de b
    (
        [0] => 2
        [1] => 3
    )
    dans ce cas la clé $a[0] != $b[0] (ce qui revient donc à dire que 1 != 2)

    Il faut donc utiliser la fonction array_intersect($tab1, $tab2) comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $result = array_intersect($a, $b);
    for ($i = 0; $i < 3; $i++)
    {
    	echo  $a[$i].' - ';
    	echo  $result[$i].'<br />';
    }
    Ce qui nous affiche donc:
    1 -
    2 - 2
    3 - 3
    Voilà si ça peut aider quelqu'un ^^

Discussions similaires

  1. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  2. Réponses: 2
    Dernier message: 18/11/2008, 15h33
  3. [Tableaux] Comparaison de 2 tableaux
    Par amans dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2007, 12h34
  4. [Tableaux] comparaison de variables
    Par cheucher dans le forum Langage
    Réponses: 17
    Dernier message: 21/02/2006, 13h03
  5. Réponses: 1
    Dernier message: 24/12/2005, 14h18

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