[php] Concaténation array clef et valeur

Fermé
Ialp - 9 mai 2006 à 18:35
 Torajio - 19 juil. 2007 à 00:32
Bonjour,

J'ai un petit problème pour concaténer un tableau dans une boucle, seulement les valeurs, ça je sais faire, mais avec valeur et clef, je n'ai pas trouvé comment faire.

Exemple parlant de ce que je veux obtenir :

for($i=0; $i<5; $i++)
{
    $array[] .= "clef $i" => "$valeur $i";
}


Bien entendu, j'ai un parse error.

Quelle est la syntaxe pour faire ça ?

Merci.
A voir également:

4 réponses

PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
9 mai 2006 à 21:39
Bsr

Pas sûr de bien comprendre ...

Tu ne peux pas concaténer un tableau !

Tu peux initialiser un tableau dans une bcl par ex


<?php
$array = array();
for($i=0; $i<5; $i++)
{
    $array["clef ".$i] = "valeur ".$i;
}
?>



ou encore manipuler les clés et les valeurs en les stockant dans une chaîne par ex

<?php
$str="";

foreach($array as $key => $value)
{
	$str .= "Clé ".$key." => Valeur ".$value."\n";
}
?>
<pre>
<?php  var_dump($str); ?>
</pre>


je ne vois pas bien ce que tu veux faire ...



@+
PHP
3
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
11 mai 2006 à 00:14
Bsr

D'abord sache que si ta table comporte les champs "per_nom", "pre_prenom","per_matricule'
alors le simple fait d'éxécuter :

$req = mysql_query("SELECT champ1, champ2 FROM table");
$donnees = mysql_fetch_assoc($req) ;

tu retournes déjà :
$donnees["per_nom"] = "nom 1"
$donnees["per_prenom"] = "prénom 1"
$donnees["per_matricule"] = "00001"

C'est pas déjà ce que tu veux ?

Ou alors tu veux stocker toutes les lignes retournées par ta requête dans un "gros" tableau ?

Gaffe ca risque de bouffer pas mal de ressource si ta requête retourne beaucoup de ligne


Essai toujours :

$tableau = array();
$req = mysql_query("SELECT champ1, champ2 FROM table");
while( $donnees = mysql_fetch_assoc($req) )
{
    $tableau[] = $donnees;
}

1
Slt,

Oui, en fait, je me suis mal exprimé.

Ce que je désire, c'est construire un tableau key et value dans une boucle.

Par exemple en extrayant des données d'une table et en affectant le 1er champ à la clef, et le second à la valeur, donc un truc du style :

$req = mysql_query("SELECT champ1, champ2 FROM table");
while( $donnees = mysql_fetch_assoc($req) )
{
    $tableau[] .= $donnees['champ1'] => $donnees['champ2'];  // ceci est incorrect
}


De façon à obtenir au final un tableau clef et valeur :

$tableau = ('clef0' => 'valeur0',
            'clef1' => 'valeur1',
            'clef2' => 'valeur2',
            'clef3' => 'valeur3',
            'clef4' => 'valeur4');


J'espère que c'est plus clair :D
0
Bonsoir tout le monde ;) :)
Alors, pour récupérer les données d'une requête SQL dans un tableau, c'est OK ;) (merci PhP :))

Imaginons qu'après ceci, j'ai une autre requête SQL !
Comment faire pour CONTINUER à remplir le tableau précédament créé par les nouvelles valeurs de cette 2nde requete ?



Exemple au cas où ...

req1 = mysql_query("SELECT champ1, champ2 FROM table WHERE champ1='titi' ");
while( $donnees1 = mysql_fetch_assoc($req1) )
{
    $tableau[] = $donnees1;
}

// Ensuite ...

req2 = mysql_query("SELECT champ1, champ2 FROM table WHERE champ1='toto' ");
while( $donnees2 = mysql_fetch_assoc($req2) )
{
    // J'aimerai donc CONTINUER à remplir le tableau avec ces nouvelles valeurs !!
    // La syntaxe qui suit est donc fausse !!
    $tableau[] = $donnees2;
}
0
salut,

$tableau[] .= $donnees2

ca le fait pas ? pour un chaine de caractere ca fonctionne a 100%.Pour un tableau on peux toujour essayer :-)
0
C'est tiré par les cheuveux mais ca marche...
Ca s'appelle la variable variable.. non non vous ne voyez pas double. Par contre il est necessaire de savoir combien de réponses nous aurons :/

req1 = mysql_query("SELECT champ1, champ2 FROM table WHERE champ1='titi' ");
$compt=0;
while( $donnees1 = mysql_fetch_assoc($req1) )
{
${'tableau'.$compt} = array($donnees1['champ1'],$donnees['champ2']);
$compt++
}
//Concaténation des tableaux dans un 'super-tableau'
$supertableau = array($tableau1,$tableau2,....,$tableaun);


voilà j'espère que ca t'aide au moins un ptit peu
0
Torajio > Lascar
19 juil. 2007 à 00:32
Pour avoir un seul et même array pour deux requêtes, il y a mieux :

$requete1 = mysql_query('Requête 1');
$requete2 = mysql_query('Requête 2');

$tableau1 = mysql_fetch_assoc($requete1);
$tableau2 = mysql_fetch_assoc($requete2);

$tableau = array_merge($tableau1, $tableau2);
0