2014-10-31 141 views
0

我有以下通過我的網站上的表單條目循環的腳本。忽略Foreach循環中的重複

但是,我想刪除任何重複的條目(在這種情況下,使用相同的電子郵件地址的條目)。

因此,如果我的foreach循環找到重複的電子郵件地址,它打破了循環。

如何使用以下腳本實現此目的?

foreach ($scouts as $participant) { 
      $fname = ucfirst($participant['2']); 
      $lname = ucfirst($participant['3']); 
      $email = $participant['5']; 
      $html .= "\t<li><a href=>$fname $lname $email</a></li>\n"; 
    } 
+0

如果您從數據庫中獲取電子郵件地址(我假定MySQL),您可以在'SELECT'中使用'DISTINCT'。 – 2014-10-31 13:05:36

回答

4

創建另一個數組來存儲我們已經輸出電子郵件地址,然後在每次迭代檢查我們還沒有使用的電子郵件地址。

$emails = array(); //array to store unique emails (the ones we've already used) 
foreach ($scouts as $participant) { 
    $fname = ucfirst($participant['2']); 
    $lname = ucfirst($participant['3']); 
    $email = $participant['5']; 
    if(in_array($email, $emails)) { //If in array, skip iteration 
     continue; 
    } 
    $html .= "\t<li><a href=>$fname $lname $email</a></li>\n"; 
    $emails[] = $email; //Add email to "used" emails array 
} 
0

在您的foreach循環之前,創建一個新的空數組,用於存儲已知的「已知」電子郵件地址。
在您的foreach循環中測試新數組是否已經包含電子郵件,如果沒有,保存並打印它,否則忽略並再次循環。

$uniqueArray = array(); 
foreach ($scouts as $participant) { 
    if (!in_array($participant['5'], $uniqueArray)) { 
      $fname = ucfirst($participant['2']); 
      $lname = ucfirst($participant['3']); 
      $email = $participant['5']; 
      $html .= "\t<li><a href=>$fname $lname $email</a></li>\n"; 
      $uniqueArray[] = $email; 
    } 
} 
+1

'array_exists()'?那是什麼? – Ghost 2014-10-31 13:10:30

+0

錯誤:p更正後 – 2014-10-31 13:11:23