8768 sujets

Développement web côté serveur, CMS

Bonjour, j'ai essayé de trouver la solution par mes propres moyens mais là je sèche. J'ai 2 array simples:

array1=array(texte1,texte2,texte3,...);
array2=(texteA,texteB,texteC,...);


Je souhaiterai afficher un truc du genre:
texte1: texteA
texte2: texteB

Est-ce possible dans le format actuel de mes array?

Merci de votre aide
Salut,

De mon point de vue, je ferais un count() des deux tableaux.
Je ferais ensuite en for( ... ) sur le count() le plus élevé grâce à la fonction max().
Enfin, j'afficherais les indices si existants :


<?php
if (isset($tableau1[$i])) {
echo $tableau1[$i];
}
if (isset($tableau2[$i])) {
echo $tableau2[$i];
}


OU $i est l'indice du for. Il y a peut-être plus propre, mais cette solution fonctionnerait.

Bon week-end Smiley smile
Modifié par Gaylord.P (19 Sep 2015 - 19:56)
salut,
tu peux aussi passer par array_combine pour ne boucler ensuite que sur un unique tableau :

foreach(array_combine(array1, array1) as $k=>$v)
   echo "$k:$v";
Gaylord.P a écrit :
Salut,

De mon point de vue, je ferais un count() des deux tableaux.
Je ferais ensuite en for( ... ) sur le count() le plus élevé grâce à la fonction max().
Enfin, j'afficherais les indices si existants :


&lt;?php
if (isset($tableau1[$i])) {
echo $tableau1[$i];
}
if (isset($tableau2[$i])) {
echo $tableau2[$i];
}


OU $i est l'indice du for. Il y a peut-être plus propre, mais cette solution fonctionnerait.

Bon week-end Smiley smile


Et bien je n'ai pas réussi à implanter cette solution je bloque quelque part mais je ne vois pas où!! Smiley fache
Zelalsan a écrit :
salut,
tu peux aussi passer par array_combine pour ne boucler ensuite que sur un unique tableau :

foreach(array_combine(array1, array1) as $k=&gt;$v)
   echo "$k:$v";


Avec cette solution seulement les dernières variables des array sont renvoyées

$array1 = array("text1", "text2", "text3");
$array2 = array("textA", "textB", "textC");

foreach (array_combine($array1, $array2) as $k=>$v)

	echo "$k: $v<br>";
Zelalsan a écrit :

$array1 = array("text1", "text2", "text3");
$array2 = array("textA", "textB", "textC");

foreach (array_combine($array1, $array2) as $k=&gt;$v)

	echo "$k: $v&lt;br&gt;";

Idem Smiley biggol je suis vraiment dsl Smiley bawling
Modérateur
Salut,

Zelalsan a écrit :

$array1 = array("text1", "text2", "text3");
$array2 = array("textA", "textB", "textC");

foreach (array_combine($array1, $array2) as $k=&gt;$v)

	echo "$k: $v&lt;br&gt;";


+1

Pour moi, cette méthode reste le mieux, mais attention : pour être en accord, il faut que les 2 tableaux aient le même nombre d'items. if count() === count() .... assert ?

Zelalsan, autres et moi n'avons pas de boules de cristale. As tu des messages d'erreurs ? lesquels ?

Pourquoi as tu 2 arrays que tu dois merger/combiner ?
niuxe a écrit :
Salut,



+1

Pour moi, cette méthode reste le mieux, mais attention : pour être en accord, il faut que les 2 tableaux aient le même nombre d'items. if count() === count() .... assert ?

Zelalsan, autres et moi n'avons pas de boules de cristale. As tu des messages d'erreurs ? lesquels ?

Pourquoi as tu 2 arrays que tu dois merger/combiner ?


Alors j'ai 2 array avec exactement le même nombre d'item. Un contenant des texte l'autre des date au format timestamp provenant tous 2 d'une base de donnée. Chaque texte est obligatoirement en rapport avec la date suite aux remplissage d'un formulaire.

arrayA("texte1","texte2",...)
arrayB("2015-09-12 00:00:00","2015-09-15 00:00:00",....)

Avec vos proposition aucune erreur cependant il ne m'affiche que le dernier item de chacune des 2 array

texte2:2015-09-15 00:00:00


foreach (array_combine($tab, $tab2) as $k=>$v)
$essai=$k."=>".$v."<br>";


Merci de l'attention que vous me portez Smiley cligne
Modifié par azken (21 Sep 2015 - 21:49)
Modérateur
azken a écrit :


Alors j'ai 2 array avec exactement le même nombre d'item. Un contenant des texte l'autre des date au format timestamp provenant tous 2 d'une base de donnée. Chaque texte est obligatoirement en rapport avec la date suite aux remplissage d'un formulaire.

arrayA("texte1","texte2",...)
arrayB("2015-09-12 00:00:00","2015-09-15 00:00:00",....)

Avec vos proposition aucune erreur cependant il ne m'affiche que le dernier item de chacune des 2 array

texte2:2015-09-15 00:00:00


foreach (array_combine($tab, $tab2) as $k=&gt;$v)
$essai=$k."=&gt;".$v."&lt;br&gt;";


Merci de l'attention que vous me portez Smiley cligne


C'est normal. Smiley cligne
Et tu fais un echo en sortie de boucle.... Un truc du style :

foreach (array_combine($tab, $tab2) as $k=>$v){
      $essai=$k."=>".$v."<br>";
}
echo $essai;



Dans ce cas là :

foreach (array_combine($tab, $tab2) as $k=>$v){
      $essai .= $k."=>".$v."<br>";
}
echo $essai;

D'où l'intérêt d'aéré son code (sans exagéré bien sûr) et d'ajouter les accolades Smiley cligne

ps : Si tu ne comprends pas trop ce que j'ai écrit, je t'invite à regarder cet article : opérateurs de chaîne.
Modifié par niuxe (21 Sep 2015 - 22:10)
Tout simplement...
En mettant

$essai = $k."=>".$v."<br>";

tu écrases ta valeur précédente à chaque incrémentation de ta boucle. C'est pour cela que tu n'as que la dernière valeur.
Il faut donc concaténer à chaque incrémentation avec ".=".
Zelalsan a écrit :
Tout simplement...
En mettant

$essai = $k."=>;".$v."<br>;";

tu écrases ta valeur précédente à chaque incrémentation de ta boucle. C'est pour cela que tu n'as que la dernière valeur.
Il faut donc concaténer à chaque incrémentation avec ".=".

MERCI je n'avais pas vu plus loin que le bout de mon nez, c'est bien la concaténation qui manquait!!!
Merci encore du temps que vous m'avez consacrez.