Comparer tableaux 2 dimensions - PHP
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j'ai deux tableaux à 2 dimensions chacun
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
Le résultat est là mais le code est lourd non ? -_-
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:
- Comparer tableaux 2 dimensions - PHP
- Supercopier 2 - Télécharger - Gestion de fichiers
- Fusionner 2 tableaux excel - Guide
- 2 ecran pc - Guide
- Tableaux croisés dynamiques - Guide
- Format a5 dimensions - Guide
2 réponses
Tu peut faire une double boucle pour le parcours de tes tableaux:
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.
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.
//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
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é.