KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Dimanche 18 mai 2008 - 02:27:13

[php] Concaténation array clef et valeur

Rechercher : dans
[php] Concaténation array clef et valeur
par Ialp
 Fil de Discussions
Statut : Non résolu
mardi 9 mai 2006 à 18:35:40
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.
Répondre à Ialp  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par PhP, le mardi 9 mai 2006 à 21:39:25 Fil de Discussions
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
Répondre à PhP

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Ialp, le mardi 9 mai 2006 à 23:23:41 Fil de Discussions
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
Répondre à Ialp

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par PhP, le jeudi 11 mai 2006 à 00:14:18 Fil de Discussions
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;
}

PhP 
Répondre à PhP

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par crewstyle, le lundi 9 octobre 2006 à 20:44:07 Fil de Discussions
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;
}
Répondre à crewstyle

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par RLV, le lundi 15 janvier 2007 à 19:21:54 Fil de Discussions
salut,

$tableau[] .= $donnees2

ca le fait pas ? pour un chaine de caractere ca fonctionne a 100%.Pour un tableau on peux toujour essayer :-)
Répondre à RLV

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Lascar, le mardi 5 juin 2007 à 04:15:14 Fil de Discussions
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
Répondre à Lascar

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Torajio, le jeudi 19 juillet 2007 à 00:32:13 Fil de Discussions 
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);
Répondre à Torajio
Discussions pertinentes trouvées dans le forum
17/02 08h58variable de session PHP qui change de valeurWebmastering24/02 15h349
14/01 20h16PHP : Erreure ARRAY()Webmastering15/01 09h303
30/11 17h10[PHP] Utiliser arrays pour aléger mon codeWebmastering02/12 16h362
26/04 17h50[PHP]Test Adresse IP valideProgrammation25/10 13h483
Plus de discussions sur « [php] Concaténation array clef et valeur » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide