2015-10-09 1 views
0

J'ai une boucle foreach et je souhaite lister tous les éléments d'un tableau. Le comportement est simple et fonctionne comme ceci:Comprendre les comportements de boucle php

$posttags = get_the_tags(); 
     if ($posttags) { 
      foreach($posttags as $tag) { 
      $tagnames = $tag->name . ', ' ; 
      echo $tagnames; 
     } 
    } 

ce message de code La chaîne suivante: adénosine, la pression artérielle, la caféine, la cocaïne, le cœur, les neurotransmetteurs, araignées, web

qui est chaque nom tag le tableau.

Cependant, je voudrais utiliser cette chaîne en dehors de la boucle foreach, mais chaque fois que je fais echo $tagnames; en dehors de toi boucle foreach, comme ceci:

$posttags = get_the_tags(); 
     if ($posttags) { 
      foreach($posttags as $tag) { 
      $tagnames = $tag->name . ', ' ; 
     } 
     }  

echo $tagnames; 

seule la dernière balise qui est web est l'écho 'ré. Pourquoi est-ce? et comment puis-je utiliser la chaîne complète en dehors de la boucle foreach?

Répondre

1

Ce que vous avez à faire est d'initialiser une variable vide hors de la boucle, puis de concaténer les variables en utilisant la syntaxe .=.

$tagnames = ''; 
$posttags = get_the_tags(); 
if ($posttags) { 
    foreach($posttags as $tag) { 
     $tagnames .= $tag->name . ', ' ; 
    } 
}  

echo $tagnames; 
+0

Wow, ça marche !!! Merci beaucoup. J'ai deux questions. pourquoi est-ce que la variable doit être créée en dehors de la boucle (je l'ai essayée sans le premier '$ tagnames = '';' et ça marche bien)? et que fait la période précédant le = do dans $ $ tagnames. = $ tag-> name. ','; 'fonctionne-t-il toujours comme concaténation? PHP –

+0

vous permet même de concaténer les chaînes même si vous utilisez une variable non initialisée. Btw dans ce cas vous en aviez besoin car sinon, quand vous faites le 'echo $ tagnames',' $ tagnames' ne peut pas exister si '$ posttags' est vide. Le '. =' Est utilisé pour concaténer une chaîne en une chaîne originale. Donc, si vous avez $ a = 'a'; $ a. = 'b'; est égal à $ a = $ a. 'b'; – borracciaBlu

+1

... pour ajouter à^@ChrisHaugen en ne concaténant pas, vous écrasez vos variables à chaque itération. –