问题
I'm trying to add a newline \n
, in my foreach statement with implode.
My code:
$ga->requestReportData($profileId,array('country'),array('visits'));
$array = array();
foreach($ga->getResults() as $result){
$array[] = "['".$result->getcountry()."', ".$result->getVisits()."]";
}
echo implode(",\n", $array);
I only get a comma and a space between my results. I want a comma and a newline.
I am trying to get something like this:
['Country', 'number'],
['Country', 'number'],
['Country', 'number']
However I I get this:
['Country', 'number'], ['Country', 'number'], ['Country', 'number']
Why does my \n not cause a newline?
回答1:
I suspect it is because you are echoing the data to the browser and it's not showing the line break as you expect. If you wrap your implode in the the <pre>
tags, you can see it is working properly.
Additionally, your arguments are backwards on your implode function, according to current documentation. However, for historical reasons, parameters can be in either order.
$array = array('this','is','an','array');
echo "<pre>".implode(",\n",$array)."</pre>";
Output:
this,
is,
an,
array
回答2:
For cross-platform-compatibility use PHP_EOL
instead of \n
.
Using the example from the accepted answer above:
$array = array('this','is','another','way');
echo "<pre>".implode(PHP_EOL, $array)."</pre>";
If you're writing directly to HTML (it wouldn't work on files) there is an option of using <br>
like this:
$array = array('this','is','another','way');
echo "<p>".implode(<br>, $array)."</p>";
Both output:
this,
is,
another,
way
回答3:
This can also work
$array = array('one','two','three','four');
echo implode("<br>", $array);
Output:
one
two
three
four
回答4:
Many others claim you use the wrong order, that's only partial right, because the docs only recommend this, but you don't have to:
implode() can, for historical reasons, accept its parameters in either order. For consistency with explode(), however, it may be less confusing to use the documented order of arguments.
I think your problem is caused by how browsers interpret HTML. They don't care about newlines, they're like a normal space for them.
To show these linebreaks, you can use <pre><?php echo implode($glue, $array); ?></pre>
. You could also use nl2br(implode(..))
or nl2br(implode(..), true)
if you're writing XHTML.
来源:https://stackoverflow.com/questions/21584164/php-add-a-newline-with-implode