Les Allergies
Alimentaires
Posez votre question Signaler

[php] Concaténation array clef et valeur

Ialp - Dernière réponse le 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.
Lire la suite 

[php] Concaténation array clef et valeur »

7 réponses
Réponse
+3
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
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;
}

Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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;
}
RLV - 15 janv. 2007 à 19:21
salut,

$tableau[] .= $donnees2

ca le fait pas ? pour un chaine de caractere ca fonctionne a 100%.Pour un tableau on peux toujour essayer :-)
Lascar - 5 juin 2007 à 04:15
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
Torajio - 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);
Ajouter un commentaire
Ce document intitulé « [php] Concaténation array clef et valeur » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?