Affichage en infinité de fois

Fermé
emmanuelle_ Messages postés 46 Date d'inscription mardi 2 avril 2013 Statut Membre Dernière intervention 10 juillet 2013 - 17 avril 2013 à 16:31
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 18 avril 2013 à 15:03
Bonjour,


j'ai besoin de comparer 2 tableaux multidimensionnel
voici mon code :

foreach( $tab1 as $key11 => $val1) {
foreach( $val1 as $key111 => $val2) {
foreach( $val2 as $key1 => $val) {
foreach($tab as $keyy=>$value1){
foreach($value1 as $keyyy=>$value2){
foreach($value2 as $key=>$value){

if($val!==$value){
echo $val


}
}
}
}
}
}
pour juste affiche ceux qui sont pas en commun mais il les affiche en infinité de fois je ne sais pas pourquoi; :(:(:(
Merci pour votre aide

3 réponses

Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
17 avril 2013 à 20:07
Salut,

On pourrai résumer ce que fais avec deux tableaux simples :

$tab1 = array(1, 2, 3, 4, 5);
$tab2 = array(1, 2, 3, 10, 11);

Ici mes tableaux possèdent donc deux différences.

Toi tu fais ça :
1/ Tu prends le "1" du premier tableau et tu le compares à tout le 2e. Il y est une fois dans le deuxième donc ici on va afficher "1111".
2/ Tu prends le "2" [...] : "2222".
3/ Tu prends le "3" [...] : "3333".
4/ Tu prends le "4" [...] : "44444".
5/ TU prends le "5" [...] : "555555".

Toi tu fais pareil mais avec des tableaux à 3 dimensions. Au finale, tu n'affiches pas les clés qui sont en différence, mais tu affiches une clé du premier tableau à chaque fois qu'elle n'est pas la même que n'importe quelle clé du 2e tableau.

En gros, si ton premier tableau ne contient 100 fois "1" et que ton 2e contient 99 fois "0" et une fois "1" alors ton script va t'afficher 100*99 = 9900 fois "1". Tu me suis ?

Mais que veux-tu faire exactement ?
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
17 avril 2013 à 22:04
Salut,

Pour bien comprendre la structure de tes tableaux, fais un print_r de chacun. Peut être que tu y verras plus clair dans façon de les parcourir.

Sinon, Mihawk marque un point : que veux tu faire exactement ?
Car il y a pas mal de fonction dans php pour les tableaux, peut être que ce que tu veux faire existe déjà.
0
emmanuelle_ Messages postés 46 Date d'inscription mardi 2 avril 2013 Statut Membre Dernière intervention 10 juillet 2013
18 avril 2013 à 09:21
Bonjour;

pour tab quand j'ai fait print_r; il m'affiche ça
Array(
[0] => Array
(
[0] => Array
(
[0] =>mot
)

)

[1] => Array
(
[0] => Array
(
[0] => htt
)

)

[2] => Array
(
[0] => Array
(
[0] =>fac
)

)
[3] => Array
(
[0] => Array
(
[0] => collège
)

)

[4] => Array
(
[0] => Array
(
[0] =>primaire
)

)
)
et pour tab1 il m'affiche:


Array(
[0] => Array
(
[0] => Array
(
[0] =>mot
)

)

[1] => Array
(
[0] => Array
(
[0] => httmap
)

)

[2] => Array
(
[0] => Array
(
[0] =>fac
)

)
[3] => Array
(
[0] => Array
(
[0] => collège
)

)

[4] => Array
(
[0] => Array
(
[0] =>crèche
)

)
)
moi je voudrai récupérer les éléments qui se trouvent dans tab 1 et pas dans tab comme crèche, httmap
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
18 avril 2013 à 09:33
Quel est l'intérêt d'utiliser des tableaux à trois dimensions si tu ne mets qu'une seule valeur dedans à chaque fois ? Autant faire :

$tab = array("mot", "htt", "fac", "collège", "primaire");
$tab1 = array("mot", "httmap", "fac", "collège", "crèche");

Et ainsi tu auras tes différences en faisant :

$diff = array_diff($tab1, $tab);

0
emmanuelle_ Messages postés 46 Date d'inscription mardi 2 avril 2013 Statut Membre Dernière intervention 10 juillet 2013
18 avril 2013 à 09:35
je les ai récupére comme ça après un preg match all
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
18 avril 2013 à 09:39
Un preg_match_all renvoie du 2 dimensions, pas du 3...
0
emmanuelle_ Messages postés 46 Date d'inscription mardi 2 avril 2013 Statut Membre Dernière intervention 10 juillet 2013
18 avril 2013 à 10:36
j'ai effectué un preg_match_all sur un tableau à deux dimensions donc le résultat est un tableau à 3 dimensions
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
18 avril 2013 à 10:46
Alors je te conseille d'effectuer une conversion de ce tableau à 3 dimensions en un tableau à 1 dimension avant de rechercher les différences. Tu y gagneras en temps de traitement.
0
emmanuelle_ Messages postés 46 Date d'inscription mardi 2 avril 2013 Statut Membre Dernière intervention 10 juillet 2013
18 avril 2013 à 11:06
oui c'est ce que je suis en train de faire mais il faut le transférer à un tableau de 2 dimensions car j'ai besoin de séparer les éléments de mon tableau aux sous tableaux c'est pour ça j'ai fait ce code :
$tab1=array(array());
for ($i=0;$i<$nb;$i++){
foreach( $tab[$i] as $key11 => $value1) {
foreach( $value1 as $key111 => $value2) {
foreach( $value2 as $key1111 => $value) {


array_push($tab1, $value);


}
}
}
}
print_r($tab1);

mais sans succès il affiche tout dans un seul tableau mais moi j'ai besoin vraiment de le séparer dans un tableau à deux dimensions:(:(:(
0