用数组 php 中的字符串列表替换字符串

Replace a string with list of string from an array php

我有一个 php 文件,其中包含像

这样的代码块
$error_arr =  array();
foreach{
    try{
            INSERT DATA
    }catch(Exception $e){
        $error_arr = $e;
    }
}


$data_arr = [
        'filename' => $filename,
        'user_name' => $user_name,
        'error' => $error_arr
    ];

此处,异常将被捕获并存储在 $error_arr 中,然后存储在 data_arr['error'].

在邮件文件中,我将替换为

  $array_from_to = array (
            '[[USER_NAME]]' => $this->data_arr['user_name'],
            '[[FILENAME]]' => $this->data_arr['filename'],
            '[[ERROR]]' => $this->data_arr['error']
        );

        $data->content = str_replace(array_keys($array_from_to), $array_from_to, $data->content);



   {{OTHER STUFF of mail content}}

    [[ERROR]]

   {{OTHER STUFF of mail content}}

现在,在这个错误块中,我想显示数组中的所有错误。因为这个错误数可以是从 0 到任何数字。但是,目前它只显示最后一个错误。如何,我可以将所有错误显示为有序列表吗?

您需要进行 2 处更改,第一个是存储错误数组 - 您目前每次都覆盖错误...

$error_arr[] = $e;

第二个是如何将错误数组构建成字符串来替换,一个简单的方法是使用implode()...

'[[ERROR]]' => implode(",", $this->data_arr['error'])

您可能想要更改它的显示方式,但这只会提供以逗号分隔的错误列表。

更新:

如果你想列出错误,你可以添加一个简单的 foreach() 循环来构建一个字符串,其格式为你之后...

$error = '';
foreach ( $data_arr['error'] as $key => $text )    {
    $error .= ($key+1)." - ". $text.PHP_EOL;
}

然后

'[[ERROR]]' => $error