Comparer tableaux 2 dimensions - PHP

Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

j'ai deux tableaux à 2 dimensions chacun

$tab1
Array
(
    [nom_categorie] => Array
        (
            [0] => achat
            [1] => test
        )

)

$tab2
Array
(
    [nom_categorie] => Array
        (
            [0] => achat
        )

)
 [


J'ai besoin de comparer les deux et qu'on me retourne la valeur [1] => test.
Pour rendre le problème moins délicat, je fais en sorte de n'avoir à comparer que les éléments de la deuxième divisions (achat et test);

J'ai essayer le code suivant :
https://www.php.net/manual/fr/function.array-diff.php (multidimensional_array_diff)
ainsi que : http://fr2.php.net/manual/fr/function.array-diff-assoc.php (array_compare)
Mais je n'ai pas le résultat attendu

FOREACH($tab1 AS $cle1 => $element1){
	FOREACH($element1 AS $cle2 => $element2){
		$tab3[]=$element2;
	}
}
FOREACH($tab2 AS $cle1 => $element1){
	FOREACH($element1 AS $cle2 => $element2){
		$tab4[]=$element2;
	}
}

$result = array_diff($tab4,$tab3);
affTab($result);

Le résultat est là mais le code est lourd non ? -_-

2 réponses

  1. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
     
    Tu peut faire une double boucle pour le parcours de tes tableaux:

    for($i = 0; $i < MAX($tab1, $tab2);$i++) 
    { 
         for($j = 0; $j < MAX($tab1[$i], $tab2[$i]); $j++) 
         { 
               //tu compares 
         } 
    } 
    
    


    Le code peut ne pas correspondre exactement a du php, je n'ai plus en tete la syntaxe exacte

    --
    La bretagne...le plus bel endroit au monde.
    0
    1. Utilisateur anonyme
       
      Merci de te pencher sur le problème :)

      le problème de la boucle for c'est qu'imaginons qu'on est ça :

      [0] => achat
      [1] => test

      [0] => achat
      [1]=>boulangerie
      [2] => test

      boulangerie va ressortir, mais test aussi :(.

      Ceci risque d'arriver parce que je travail sur une bdd :p.
      Désolé de ne pas avoir précisé.
      0
  2. Utilisateur anonyme
     
    //Comparer les éléments d'un tableau deux dimensions
    function compareTab($tab1, $tab2,$elementComparaison){
    	FOREACH($tab1 AS $cle1 => $element1){		
    		switch($elementComparaison){
    			//Au niveau de la clé
    			case 0:
    					$tab3[] = $cle1; 
    				break;
    				
    			//Au niveau de la clé 2
    			case 1:
    				FOREACH($element1 AS $cle2 => $element2){
    					$tab3[] = $cle2; 
    				}
    				break;
    				
    			//Au niveau de l'élément 2
    			case 2:
    				FOREACH($element1 AS $cle2 => $element2){
    					$tab3[] = $element2; 
    				}
    				break;
    			
    			default :
    				$tab3['Parametre3'][0] = "0 --> cle1";
    				$tab3['Parametre3'][1] = "1 --> cle2";
    				$tab3['Parametre3'][2] = "2 --> element2";
    				$tab4=array();
    		}		
    	}
    	FOREACH($tab2 AS $cle1 => $element1){
    		switch($elementComparaison){
    			//Au niveau de la clé
    			case 0:
    					$tab4[] = $cle1; 
    				break;
    				
    			//Au niveau de la clé 2
    			case 1:
    				FOREACH($element1 AS $cle2 => $element2){
    					$tab4[] = $cle2; 
    				}
    				break;
    				
    			//Au niveau de l'élément 2
    			case 2:
    				FOREACH($element1 AS $cle2 => $element2){
    					$tab4[] = $element2; 
    				}
    				break;
    		}
    	}		
    
    	return(array_diff($tab3,$tab4));
    }
    

    Voilà la fonction final, pour ceux que ça intéresse.

    Array
    (
    [nom_categorie] => Array
    (
    [0] => achat
    [1] => test
    )
    )
    nom_categori = $cle1
    [0] = $cle2
    achat = $element2
    0