【问题标题】:Remove linebreaks from print_r output从 print_r 输出中删除换行符
【发布时间】:2021-04-06 08:56:42
【问题描述】:

我有以下 PHP 代码:

$array = array('huey' => 'red', 'dewey' => 'blue', 'louie' => 'green', 'webby' => 'pink');
$postDataForLog = print_r($array, true);
$postDataForLog = str_replace('\n', ' | ', $postDataForLog);
log($postDataForLog);

我想要实现的目标很简单。将数组的内容写入日志文件。为了使文件井井有条,我需要将每条日志消息放在一行上。所以我想将print_r的输出减少到一行,并用|替换换行符。但是,由于某种原因,这不起作用,虽然我希望文件中的输出是这样的:

Array | ( | [huey] => red | [dewey] => blue | [louie] => green | [webby] => pink | )

是这样的:

Array
(
    [huey] => red
    [dewey] => blue
    [louie] => green
    [webby] => pink
)

【问题讨论】:

  • 使用单引号意味着'\n'\n,更灵活的是将'\n'替换为PHP_EOL。您也可以使用json_encode() 输出它。
  • 该死,这样的初学者错误。非常感谢,这行得通。

标签: php arrays logging replace line-breaks


【解决方案1】:
<?

$array = array('huey' => 'red', 'dewey' => 'blue', 'louie' => 'green', 'webby' => 'pink');

$postDataForLog = implode(" | ", $array);

echo $postDataForLog;

?>

【讨论】:

  • 今天显然不是我的日子......我怎么能不考虑这个?!谢谢,这行得通。
【解决方案2】:
$array = array('huey' => 'red', 'dewey' => 'blue', 'louie' => 'green', 'webby' => 'pink');
$postDataForLog = [];
foreach ($array as $key => $value) {
    $postDataForLog[] = "[$key] => $value";
}
echo ('Array | ( | '.implode(' | ', $postDataForLog).' | )');
//Output: Array | ( | [huey] => red | [dewey] => blue | [louie] => green | [webby] => pink | )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2011-05-18
    • 2021-11-02
    • 2011-06-15
    相关资源
    最近更新 更多