2012-09-27 51 views
0

因此,我正在做的一些背景。我正在製作一個帶有大量名稱和電子郵件的Excel電子表格,並根據一系列過濾器向他們發送列表的較小子集。爲了完成過濾,我將每個Excel行分解成一個JSON數組,並將其放入DOM,然後使用Javascript/jQuery來填充一些隱藏的字段。PHP解析多個已發佈變量的數組

在完成所有過濾之後,我有大約十二個以逗號分隔的列表,然後在表單發佈後使用PHP爆炸變回數組。我需要能夠使用特定於該人員的數據在電子郵件正文中轉換一些變量。不用過多的細節和風險讓你感到困惑,我基本上需要用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); 
     } 
    } 

所以,現在來回答這個問題。
如何更有效地進行替換?
我是否創建一個包含信息的數組的對象,並循環遍歷數組來替換每個發佈名稱的對象變量,或者我是否完全錯誤地進行這種操作?任何有識之士將不勝感激

+0

你知道,你也可以直接張貼陣列? ' – feeela

回答

0

你可以做如下替換

for($i=0; $i<$count; $i++) { 
    //Create temp variable for body temp  
    $body_temp = $email_text; 
    $body_temp = str_replace(array('{firsname}','{email}'), array($first_name[$i],$emails[$i]), $body_temp); 
}