PHP中使用implode添加换行

24

我正在尝试在使用implode的foreach语句中添加一个换行符\n

我的代码:

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

我的结果之间只有逗号和一个空格。我想要逗号和换行符。

我想要像这样:

['国家','数字'],

['国家','数字'],

['国家','数字']

但是我得到了这个:

['国家','数字'], ['国家','数字'], ['国家','数字']

为什么我的 \n 没有起到换行的作用?


1
你能展示一下你的数组和你想要得到的结果吗? - putvande
请确保在 <pre></pre> 标签中打印结果,否则您将只看到一个空格。 - cmorrissey
1
尝试使用 implode(",\n", $array);,参见:http://bd1.php.net/function.implode - Awlad Liton
不以这种方式工作... - Mathieu
首先,请发布您的真实代码。其次,请解释问题所在。"不工作"太过模糊不清。(并检查答案...) - Karoly Horvath
4个回答

31
我怀疑是因为你将数据回显到浏览器上,而它没有按照你的期望显示换行符。如果你在 implode 函数外面加上 <pre> 标签,你就可以看到它正常工作了。
此外,根据当前的文档,你的 implode 函数的参数顺序是相反的。然而,出于历史原因,参数可以以任何顺序传递。
$array = array('this','is','an','array');
echo "<pre>".implode(",\n",$array)."</pre>";

输出:

this,
is,
an,
array

2
请查看文档:implode() 函数由于历史原因,可以接受参数的任意顺序。但为了与 explode() 保持一致,使用文档中所列出的参数顺序可能会更清晰易懂。 - kelunik
1
有没有不使用<pre>标签的选项? - Kiran Reddy

27

为了实现跨平台兼容性,请使用PHP_EOL而不是\n

使用上面被接受的答案作为例子:

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

如果您直接编写HTML(而不是文件),则可以使用<br>选项,方法如下:

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

两者的输出:

this, 
is, 
another, 
way

正确的答案。它还解决了可移植性问题。 - kta
当我向文本区域输入添加内容时,使用PHP_EOL对我很有用。 - Jimmyb_1991
PHP_EOL在Laravel中有效。如果您还想要逗号“,”,则可以这样写:implode(','.PHP_EOL, $array)。 - Hriju
这应该标记为正确答案,'\n'在Windows上不起作用,如果您意外写成'\n'而不是"\n",它也不会起作用。 - Benny Alex

4
这也可以起作用。
$array = array('one','two','three','four');
echo implode("<br>", $array);

输出:

one
two
three
four

-1
许多人声称你使用了错误的顺序,这只是部分正确,因为文档只建议这样做,但你并不需要这样做:

由于历史原因,implode() 函数可以接受两种参数顺序。然而,为了与 explode() 保持一致,使用文档中所述的参数顺序可能会更清晰一些。

我认为你的问题是由浏览器如何解释HTML引起的。它们不关心换行符,对它们来说就像普通空格一样。

要显示这些换行符,可以使用 <pre><?php echo implode($glue, $array); ?></pre>。如果你在编写XHTML,则还可以使用 nl2br(implode(..))nl2br(implode(..), true)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接