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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 94
    Par défaut [Tableaux] Comparaison de 2 tableaux
    Bonjour,

    Je viens chercher de l'aide concernant les array...

    J'ai 2 array qui ont ces formes :

    $array1 = array([0] => 2 [1] => 1658 [2] => 9 [3] => 172 [4] => 311 [5] => 8);
    $array2 = array([1] => 165 [4] => 300);

    pour info
    $array1 contient toujours 6 entrées.
    $array2 peut contenir de 1 à 6 entrées (en fait il peut ne pas exister mais bon... je testerai ça avant...).

    En fait le 1er c'est l'array à l'origine et le second est un array où se trouvent seulement les valeurs qui ont été modifiées par l'utilisateur.

    il faudrait que je compare les 2 pour me retrouver avec un array contenant toutes les entrées mais avec celles qui sont modifiées....(jsuis pas très clair là :/ c'est le matin...)
    en gros j'aimerai obtenir ça :

    $array = array([0] => 2 [1] => 165 [2] => 9 [3] => 172 [4] => 300 [5] => 8);

    je suppose qu'il faut utiliser array_diff_key ou une des fonctions dans le genre... mais je n'arrive pas à ce que je veux...

    Merci de votre aide

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    La fonction array_merge aurait été parfaite mais elle ne modifie pas les tableaux numériquement indexé. Il faut donc écrire quelque chose d'équivalent comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function array_merge_keys($arr1, $arr2) {
        foreach ($arr2 as $k => $v) {
            if (is_array($v)) {
                $arr1[$k] = array_merge_keys($arr1[$k], $arr2[$k]);
            } else {
                $arr1[$k]=$v;
            }
        }
        return $arr1;
    }
     
    $array1 = array(0 => 2, 1 => 1658, 2 => 9, 3 => 172, 4 => 311, 5 => 8);
    $array2 = array(1 => 165, 4 => 300);
    print_r(array_merge_keys($array1, $array2));
    Sachant qu'il n'est pas utile de tester si le tableau $arr2 est vide puisque l'itération foreach s'en charge en quelque sorte.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 94
    Par défaut
    c'est parfait !!

    merci beaucoup

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

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 vodasan dans le forum Langage
    Réponses: 9
    Dernier message: 10/01/2008, 08h51
  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