Заменить строку списком строк из массива php - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть 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 до любого числа.Но в настоящее время отображается только последняя ошибка.Как я могу показать все ошибки в виде упорядоченных списков.

1 Ответ

0 голосов
/ 14 декабря 2018

Вам нужно сделать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...