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 ? -_-

A voir également:

2 réponses

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
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
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