有效且非冗余的PHP代码

Gab*_*iel 2 php

我有以下PHP摘录代码:

foreach($afb_replacements as $afb_to_replace => $afb_replacement) {
    $sender_subject     = str_replace($afb_to_replace, $afb_replacement, $sender_subject);
    $ar_subject         = str_replace($afb_to_replace, $afb_replacement, $ar_subject);

    $final_message      = str_replace($afb_to_replace, $afb_replacement, $final_message);
    $final_message_text = str_replace($afb_to_replace, $afb_replacement, $final_message_text);

    $ar_message         = str_replace($afb_to_replace, $afb_replacement, $ar_message);
    $ar_message_text    = str_replace($afb_to_replace, $afb_replacement, $ar_message_text);
}
Run Code Online (Sandbox Code Playgroud)

所有6个变量都以相同的方式替换(相同的文本用$ afb_to_replace和$ afb_replacement替换所有变量中的相同替换).

我想知道的是:

怎样才能更有效地写出来?也许在一行代码中.我确信有更好的方法,因为这是多余的代码,但目前还没有其他解决方案进入我的脑海.有任何想法吗?

我很好奇你的方法!

Jam*_*s C 5

这应该完全相同:

$in = array($sender_subject, $ar_subject, $final_message, $final_message_text, $ar_message, $ar_message_text);
$out = str_replace(array_keys($afb_replacements), array_values($afb_replacements), $in);
list($sender_subject, $ar_subject, $final_message, $final_message_text, $ar_message, $ar_message_text) = $out;
Run Code Online (Sandbox Code Playgroud)

为了便于阅读,我把它分成三行.

str_replace() 接受用于搜索,替换和主题的数组.

编辑:这是BoltClock建议的更漂亮的解决方案

$in = compact('sender_subject', 'ar_subject', 'final_message', 'final_message_text', 'ar_message', 'ar_message_text');
$out = str_replace(array_keys($afb_replacements), array_values($afb_replacements), $in);
extract($out);
Run Code Online (Sandbox Code Playgroud)