Problème avec les tableaux (arrays) PHP!!!!

Emmash Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
 Emmash -
Bonjour,

j'ai des problèmes avec les tableaux

//Mémorisation des noms des différents tableaux
if($cpt_couleur+1<count($_POST["couleur"])){
$liste_tableaux_couleur.=${"tab_resultat_couleur".$cpt_couleur}.",";
}
else{
$liste_tableaux_couleur.=${"tab_resultat_couleur".$cpt_couleur};
}

//Conserver seulement les valeur communes dans toutes les tableaux
if(count($_POST["couleur"])>1){
$tab_resultat_couleur=array_merge(array_intersect( $liste_tableaux_couleur));
}
else{
$tab_resultat_couleur=$liste_tableaux_couleur;
}

Mon problème est que la fonction array_intersect a besoin de 2 paramètres pour fonctionner...
J'ai aussi essayé d'utiliser des variables dynamiques, mais je crois que je n'ai pas codé correctement,
car ça n'a pas fonctionné. Y a-t'il une façon d'écrire le contenu de la $liste_tableaux_couleur dans la fonction array_intersect...
quelque chose qui exécuterait la ligne comme :
$tab_resultat_couleur=array_merge(array_intersect( $tab_resultat_couleur0,$tab_resultat_couleur1,$tab _resultat_couleur2));
...

Merci beaucoup à l'avance!!

Marie-Hélène
A voir également:

10 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Bonsoir,

je ne comprend pas tu veux faire array_merge c a d ajouter (déja la aussi il faut plusieurs paramètres) des intersection de tableaux ?

ensuite pourquoi dans $liste_tableaux_couleur.=$.....

tu mets .=
0
Emmash Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
En fait, dépendamment de ce que l'utilisateur a sélectionnée,

1,2,3 ou x nombre de tableaux sont créés.

Donc dans ma variable $liste_tableaux_couleur, je mémorise tous les noms des tableaux crées...

Ça donnera quelque chose du genre :

$liste_tableaux_couleur=$tab_resultat_couleur0; la première fois qu'on passera dans la boucle
$liste_tableaux_couleur=$tab_resultat_couleur0,$tab_resultat_couleur1; la deuxième fois
etc...

Ensuite tout ce que je voudrais faire ce serait de comparer les valeurs de tous les tableaux
crées pour ne conserver que les données qui sont communes dans tous les tableaux...

Il faudrait que ça donne quelque chose du genre :
$tab_resultat_couleur=array_merge(array_intersect( $tab_resultat_couleur0,$tab_resultat_couleur1,$tab _resultat_couleur2));

Mais le problème c'est qu'en faisant $tab_resultat_couleur=array_merge(array_intersect($liste_tableaux_couleur));
pour aller chercher la liste des tableaux créés, ça ne fonctionne pas puisque la fonction array_intersect s'attend à recevoir 2 paramètres et non un seul... Y'a-t-il moyen d'écrire le contenu de la variable directement?

Merci!!!

Marie-Hélène
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
et pourqoui ne pas faire ?

$liste_tableaux_couleur=array();

$liste_tableaux_couleur[]=${"tab_resultat_couleur".$cpt_couleur}


tu auras ainsi un array à deux dimensions
0
Emmash Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Non c'est quand fait c'est un moteur de recherche pour des images.

J'ai différentes couleurs qui sont donc affichés dans ma page...

Ces couleurs sont mémorisés dans mon $_POST["couleur"] qui est donc le tableau contenant toutes les couleurs cochées

Par la suite, dans une boucle, je parcoure chaque couleur du tableau pour faire une requête et sélectionner les images qui correspondent aux couleurs sélectionnées. Donc, pour chaque couleur, je crée un tableau et c'est pour ça
qu'à chaque fois que je passe dans la boucle je crée un tableau contenant les résultats pour cette couleur : ${"tab_resultat_couleur".$cpt_couleur}... et ce que je veux faire c'est de n'afficher que les images qui contiennent toutes les couleurs donc je place tous les noms des tableaux dans la variable $liste_tableaux_couleur et par la suite, je dois faire un array_intersect pour afficher uniquement les no des images contenu dans tous les tableaux. Donc le tableau à deux dimensions, ça ne règle pas mon problème, car je ne sais jamais combien de tableaux vont avoir été créés.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Ha d'accord mais pourquoi tu fais array_merge ?

$tab_resultat_couleur=array_intersect($liste_tab­leaux_couleur); 


devrait te donner un array des couleurs communes
0
Emmash Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
$liste_tableaux_couleur c'est seulement une variable pour mémoriser les noms des tableaux crées...

je veux seulement réussir à inscrire tous les noms des tableaux dans la fonction array_intersect

je ne peux pas faire array_intersect($liste_tableaux_couleur), car il voit un seul paramètre et non plusieurs...

je voudrais que ça donne quelque chose du genre : array_intersect($tab_resultat_couleur0,$tab_resultat_couleur1,...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Emmash Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Parce que si je fais seulement un array_intersect, ça garde mes index tels quels donc je peux commencer avec l'index 3 au lieu de l'index 0... array_merge permet de réséquencer tous les index des données restantes...

As-tu une idée de comment je peux faire pour mon problème?
0
Emmash Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Et puis non array_intersect($liste_tab­leaux_coule­ur) ne fonctionne pas, car il doit y avoir au moins 2 tableaux et là il comprend pas qu'il doit lire le contenu de la variable. Il utilise $liste_tableaux_couleur en pensant que c'est le nom du tableau en question.
0
Utilisateur anonyme
 
Bonsoir,
je ne vois pas bien ce que vous souhaitez faire mais en lisant tout j'ai une idée qui pourrait peut être vous satisfaire.

au moment de la création de tableau vous créez un tableau donc le premier indice est la couleur
$tableau[couleur]
puis en second indice un rang 1,2,3 pour chaque ilage de cette couleur et en indice 3 le nom ou le numéro de l'image.

si j'ai rien compris ne m'en tenez pas rigueur.
cordialement
0
Emmash Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Le problème c'est qu'on ne peut pas faire de array_intersect dans le même tableau, il faut absolument avoir au moins deux tableaux en paramètre.
0
Emmash Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Je veux juste trouver une manière de faire afficher le contenu de ma variable $liste_tableaux_couleur dans ma fonction
array_intersect() pour que ça donne quelque chose comme array_intersect($tableau1,$tableau2,$tableau3...)... tous les noms des tableaux se trouvent dans ma variable $liste_tableaux_couleur mais je ne peux pas faire array_intersect($liste_tableaux_couleur), car il faut au moins deux paramètres, y'a-t-il moyen d'écrire les valeurs de ma variable directement entre les parenthèses de la fonction????

Merci,

Marie-Hélène
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Tu peux peut être essayer de leurrer la fonction

$array_couleurs=array("bleu","jaune","vert", etc..); //dans cet array tu mets toutes tes couleurs possibles
array_intersect($liste_tableaux_couleur,$array_couleurs);

0
Emmash
 
Bonjour tout le monde,

un internaute sur un autre forum m'a aidé à résoudre mon problème... voici la solution :

eval( '$tab_resultat_couleur = array_merge(array_intersect(' . $liste_tableaux_couleur . '));' );

Bonne journée!

Marie-Hélène
0