Signaler

Problème boucle foreach et concaténation [Résolu]

Posez votre question Mpvio - Dernière réponse le 20 sept. 2016 à 17:23
Bonjour,
Je voudrais afficher plusieurs paramètres à l'aide d'une boucle. Jusque là pas de problème je sais qu'il faut utiliser un foreach pour mon cas. En revanche, mon problème intervient quand cette boucle doit intervenir dans une chaîne de caractère. Il faudrait donc que j'arrive à concaténer correctement pour permettre de bien différencier ma boucle, le texte en dur et les variables à afficher :/
Voici l'erreur affichée : Parse Error: syntax error, unexpected 'foreach' (T_FOREACH)
Voici mon code :
"parameters": ['.
     foreach($parameters as $parameter){
          echo '{ "name": "'.$parameter.'", "value": "'.$parameter_value.'"},'.;}.'
]
Afficher la suite 
Utile
+0
moins plus
Bonjour,

Tu ne peux pas introduire directement en foreach au milieu d'une chaine de caractères....
Faut la faire à part....
un truc du genre :

foreach($parameters as $parameter){
    $strTmp .= '{ "name": "'.$parameter.'", "value": "'.$parameter_value.'"},';
}

echo '"parameters": ['. $strTmp.']';



Mpvio- 20 sept. 2016 à 11:29
Bonjour Jordane45,

Merci de ta réponse ! Cela fonctionne, en revanche cela me récupère seulement le dernier paramètre alors que normalement je devrais en récupérer 6 :/
Répondre
jordane45 14652Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 29 septembre 2016 Dernière intervention - 20 sept. 2016 à 11:30
montres nous le code que tu as écris...
Tu as bien vu le point devant le égale dans ce que j'ai écrit ?
Répondre
Mpvio- 20 sept. 2016 à 11:33
J'ai écris ce que tu m'as donné. J'avais juste enlevé le point car sinon cela me sort l'erreur : Undefined variable: strTmp

Le point sert à quoi ??

foreach($parameters as $parameter){
      $strTmp .= '{ "name": "'.$parameter.'", "value": "???"},';
}

"parameters": ['.$strTmp.']
Répondre
Pitet 1926Messages postés lundi 11 février 2013Date d'inscription 29 septembre 2016 Dernière intervention - 20 sept. 2016 à 12:35
Le .= permet de combiner l'affectation la concaténation.
Pour résumer le code suivant :
$strTmp .= $parameter;

est équivalent au code suivant :
$strTmp = $strTmp . $parameter;


Il faut donc initialiser la variable $strTmp avant la boucle pour ne pas avoir d'erreur au premier tour de la boucle (car la variable $strTmp n'est pas initialisée) :
$strTmp = '';

foreach($parameters as $parameter){
      $strTmp .= '{ "name": "'.$parameter.'", "value": "???"},';
}
Répondre
Ajouter un commentaire
Utile
+0
moins plus
Salut,

Il faudrait voir la structure de ton tableau $parameters mais le résultat que tu attends ressemble au format json. Dans ce cas l'utilisation de json_encode devrait faciliter le traitement.
Par exemple avec le tableau suivant :
$parameters = array('paramaters' => array(
        array('name' => 'param1', 'value' => 'value1'),
        array('name' => 'param2', 'value' => 'value2')
        )
    );

echo json_encode($parameters);
// {"paramaters":[{"name":"param1","value":"value1"},{"name":"param2","value":"value2"}]}


Bonne journée
Mpvio- 20 sept. 2016 à 17:23
Bonjour Pitet,

Merci beaucoup pour ta réponse !!
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !