だから私がやっていることの背景を少し。名前と電子メールの大きなリストを含むExcelスプレッドシートを取得し、一連のフィルターに基づいてリストの小さなサブセットを送信しています。フィルタリングを実行するために、各Excel行をJSON配列に分割し、それをDOMに配置してから、Javascript/jQueryを使用していくつかの非表示フィールドにデータを入力します。
すべてのフィルタリングが終了すると、コンマで区切られたリストが約12個あり、フォームが投稿されたときにPHPexplodeを使用して配列に戻します。その人に固有のデータを使用して、電子メール本文のいくつかの変数を切り替えることができる必要があります。詳細に立ち入りすぎて混乱するリスクを冒すことなく、基本的に、電子メールの本文の一部の値をPHPで投稿された配列の値に置き換える必要があります。
投稿されたデータを取り込んで、次のコードで配列に変換しています。
//Bring in Hidden fields - turn into arrays
$companies = explode(",", $_POST['companies']);
$kw_signed = explode(",", $_POST['kw_signed']);
$header_rows = explode(",", $_POST['header_rows']);
$first_names = explode(",",$_POST['first_names']);
$emails = explode(",",$_POST['emails']);
$full_names = explode(",",$_POST['full_names']);
$markets = explode(",",$_POST['market']);
$zones = explode(",",$_POST['zones']);
$cities = explode(",",$_POST['cities']);
$states = explode(",",$_POST['states']);
$zipcodes = explode(",",$_POST['zipcodes']);
$p_factors = explode(",",$_POST['perf_factor']);
一連の配列を作成した後、forループを使用して配列を調べ、foreachを使用して電子メール本文の変数をそれぞれの値に置き換えます。
for($i=0; $i<$count; $i++) {
//Create temp variable for body temp
$body_temp = $email_text;
//Replace header strings with value
foreach($header_rows as $header) {
if($header == '{first_name}') {
$body_temp = str_replace($header, $first_name[$i], $body_temp);
} else if($header == '{email}') {
$body_temp = str_replace($header, $emails[$i], $body_temp);
} else if($header == '{company}') {
$body_temp = str_replace($header, $companies[$i], $body_temp);
} else if($header == '{zone}') {
$body_temp = str_replace($header, $zones[$i], $body_temp);
} else if($header == '{market}') {
$body_temp = str_replace($header, $markets[$i], $body_temp);
} else if($header == '{city}') {
$body_temp = str_replace($header, $cities[$i], $body_temp);
} else if($header == '{state}') {
$body_temp = str_replace($header, $states[$i], $body_temp);
} else if($header == '{zip}') {
$body_temp = str_replace($header, $zipcodes[$i], $body_temp);
} else if($header == '{facility_type}') {
$body_temp = str_replace($header, $facility_type[$i], $body_temp);
}
}
では、質問に移りましょう。
どうすればより効率的に交換できますか?
情報を含む配列でオブジェクトを作成し、配列をループして、投稿された名前ごとにオブジェクトの変数を置き換えますか、それともこれを完全に間違った方法で行っていますか?任意の洞察をいただければ幸いです