PHP, add a newline with implode

隐身守侯 提交于 2019-12-03 13:58:26

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

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

This can also work

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

Output:

one
two
three
four

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.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!