Comparer deux array

iTonton Messages postés 5 Statut Membre -  
CptRomaiin Messages postés 334 Statut Membre -
Bonjour à vous chers membres de la communauté CMM,
cela fait plusieurs jours que je cherche un moyen d'arriver à comparer deux arrays de longueurs différentes telles

Array1[1;2;3;4;5;6;7;8;9] et Array2[1;4;7;8;9]

de telle sorte à obtenir une troisième array telle que Array3[2;3;5;6],

j'ai tenté deux foreach() imbriqués avec un if() mais ca ne marche pas, j'ai pleins de résultats moisis et inutiles en retour o.O

j'ai essayé un Array_combine() avec foreach() mais les tableaux n'étant pas de même longueur (et ne le seront pas dans la majorité des cas),

j'ai voulu essayé de mettre directement Array1[] et Array2[] dans Array3[] puis en faisant un Array_unique() mais il me reste toujours une seule valeur sur les deux qui étaient en double

Je ne sais plus quoi faire help me please <3 <3

Aidez moi je vais mourir de l'intérieur tellement ce problème me semble hardcore alors qu'il doit être simple :'(

3 réponses

  1. Utilisateur anonyme
     
    Bsr,

    une petite piste et donc forcement un petit peu de lecture : )

    https://www.php.net/manual/fr/function.in-array.php

    Cdt
    0
    1. iTonton Messages postés 5 Statut Membre
       
      Merci beaucoup je vais voir ce que je peux faire comme script avec, ça mais déjà ça m'a l'air prometteur ! :)
      0
  2. CptRomaiin Messages postés 334 Statut Membre 58
     
    Salut,

    Tu peux tout simplement imbriquer deux foreach :

    $Array1 = array(1,2,3,4,5,6,7,8,9);
    $Array2 = array(1,4,7,8,9);
    $Array3 = array();
    
    // Comparaison des valeurs
    foreach ($Array1 as $val1) {
     $present = false;
     foreach ($Array2 as $val2) {
      if ($val1 == $val2) { $present = true; }
     }
     if (!$present) {
      array_push($Array3, $val1);
     }
    }
    
    // Affichage des valeurs
    foreach ($Array3 as $val3) {
     echo $val3 . "\n";
    }


    Dans cette exemple, le résultat sera le suivant :

    2
    3
    5
    6

    Par contre cela ne fonctionnera que dans un sens. Ce script vérifie que certaines données présentes dans le tableau 1 sont absentes du tableau 2 mais pas l'inverse. Si c'est ce que tu veux il faudra modifier le code.
    0
    1. iTonton Messages postés 5 Statut Membre
       
      Merci CptRomaiin, ton code fonctionne à la perfection, et en plus il ressemble à ce que j'avais fait et qui ne marchait pas du coup, tu m'as donné un code et j'ai compris mes erreurs ! :)
      0
    2. CptRomaiin Messages postés 334 Statut Membre 58
       
      De rien ;)
      0