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