我有以下脚本在我的网站上循环表单条目。
但是,我想删除所有重复的条目(在这种情况下,使用相同的电子邮件地址的条目)。
因此,如果我的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 :(得分: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
}
答案 1 :(得分: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;
}
}