【问题标题】:PHP, add a newline with implodePHP,使用 implode 添加换行符
【发布时间】:2014-02-05 17:25:06
【问题描述】:

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

我的代码:

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

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

我想得到这样的东西:

['国家', '号码'],

['国家', '号码'],

['国家', '号码']

但是我得到了这个:

['Country', 'number'], ['Country', 'number'], ['Country', 'number']

为什么我的 \n 不会导致换行?

【问题讨论】:

  • 你能展示你的数组和你想要得到的结果吗?
  • 确保将结果打印在 <pre></pre> 标记中,否则您只会看到一个空格
  • 试试implode( ",\n",$array); 见:bd1.php.net/function.implode
  • 不能以这种方式工作...
  • 好吧,首先,发布您的真实代码。第二:说明问题所在。 “不工作”是可笑的模糊。 (并检查答案...)

标签: php implode


【解决方案1】:

我怀疑这是因为您将数据回显到浏览器并且它没有按预期显示换行符。如果你将你的内爆包装在<pre> 标签中,你可以看到它工作正常。

此外,根据当前文档,您的参数在 implode 函数上是倒退的。但是,由于历史原因,参数可以按任意顺序排列。

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

输出:

this,
is,
an,
array

【讨论】:

  • 查看文档: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.
  • 有没有&lt;pre&gt;标签的选项
【解决方案2】:

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

使用上面接受的答案中的示例:

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

如果您直接写入 HTML(它不适用于文件),则可以选择使用 &lt;br&gt;,如下所示:

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

两个输出:

this, 
is, 
another, 
way

【讨论】:

  • 正确答案。它还解决了可移植性问题。
  • 在添加到文本区域输入时使用 PHP_EOL 对我有用
  • PHP_EOL 工作(在 laravel 中)。如果你也想要',',那么你可以这样写:implode(','.PHP_EOL, $array)。
  • 这应该被标记为正确答案,'\n'在windows上不起作用,如果你不小心写了'\n'而不是'\n',它也不会起作用。
【解决方案3】:

这个也可以

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

输出:

one
two
three
four

【讨论】:

    【解决方案4】:

    许多其他人声称您使用了错误的顺序,这只是部分正确,因为文档只建议这样做,但您不必这样做:

    implode() 可以,由于历史原因,接受它的参数 命令。但是,为了与 explode() 保持一致,它可能会更少 使用记录在案的参数顺序令人困惑。

    我认为您的问题是由浏览器如何解释 HTML 引起的。他们不关心换行符,他们就像一个正常的空间。

    要显示这些换行符,您可以使用&lt;pre&gt;&lt;?php echo implode($glue, $array); ?&gt;&lt;/pre&gt;。如果您正在编写 XHTML,也可以使用 nl2br(implode(..))nl2br(implode(..), true)

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 1970-01-01
      • 2023-03-29
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多