web-dev-qa-db-fra.com

PHP, ajouter une nouvelle ligne avec implode

J'essaie d'ajouter un newline \n, dans mon instruction foreach avec implode.

Mon code:

$ga->requestReportData($profileId,array('country'),array('visits')); 
$array = array();
foreach($ga->getResults() as $result){ 
    $array[] = "['".$result->getcountry()."', ".$result->getVisits()."]"; 
} 
echo implode(",\n", $array);

Je ne reçois qu'une virgule et un espace entre mes résultats. Je veux une virgule et une nouvelle ligne.

J'essaie d'obtenir quelque chose comme ça:

['Pays', 'numéro'],

['Pays', 'numéro'],

['Pays', 'Numéro']

Cependant, je reçois ceci:

['Pays', 'numéro'], ['Pays', 'numéro'], ['Pays', 'numéro']

Pourquoi mon\n ne provoque-t-il pas une nouvelle ligne?

8
user1708580

Je suppose que c'est parce que les données sont renvoyées au navigateur et que le saut de ligne n'est pas affiché comme prévu. Si vous enveloppez votre implosion dans les balises <pre>, vous pouvez voir qu'il fonctionne correctement.

En outre, vos arguments sont inversés dans votre fonction implode , conformément à la documentation actuelle. Cependant, pour des raisons historiques, les paramètres peuvent être dans l'un ou l'autre ordre.

$array = array('this','is','an','array');
echo "<pre>".implode(",\n",$array)."</pre>";

Sortie:

this,
is,
an,
array
18
Andy

Pour une compatibilité entre plates-formes, utilisez PHP_EOL au lieu de \n.

En utilisant l'exemple de la réponse acceptée ci-dessus:

$array = array('this','is','another','way');
echo "<pre>".implode(PHP_EOL, $array)."</pre>";

Si vous écrivez directement en HTML (cela ne fonctionnerait pas sur les fichiers), il existe une option consistant à utiliser <br> comme ceci:

$array = array('this','is','another','way');
echo "<p>".implode(<br>, $array)."</p>";

Les deux sorties:

this, 
is, 
another, 
way
6
boroboris

Cela peut aussi fonctionner

$array = array('one','two','three','four');
echo implode("<br>", $array);

Sortie:

one
two
three
four
0
B.K