2014-09-24 3 views
0

Я создал форму с тремя флажками. Каждый флажок соответствует списку рассылки в базе данных. Возможно, я получаю повторяющиеся значения, когда я проверяю 2 флажка. Я попытался использовать функцию PHP array_unique() и функции jQuery.unique() для удаления всех повторяющихся адресов электронной почты из массива.Удалить дублирующиеся значения в списке массивов php

JQuery:

<script> 
$("#sendMessage").submit(function(e) { 
    $("input[type=checkbox]").each(function() { 
     if($(this).is(":checked")) { 
      var string = $(this).val(); 
      $.ajax({ 
       url: "include/checkbox.inc.php", 
       type: "POST", 
       data: ({query: string, type: "nonurgent"}), 
       dataType:"JSON", 
       success: function(data) { 
        keep_cb = data; 
        mail(keep_cb); 
       } 
      }); 
     }    
    }); 
}); 

включают/checkbox.inc.php:

<?php 

// this page checks which mailing group is selected, urgent or non urgent 

include("mysession_start.inc.php"); 
include("db.inc.php"); 

$testarray = array(); 
$noDupes = array(); 

if(isset($_POST['query'])) { 
$checkbox_value = $_POST['query']; 
} 
if(isset($_POST['type'])) { 
$type = $_POST['type']; 
} 

if($type == "nonurgent") { 
$cb_query = "SELECT email_nonurgent FROM client_addresses WHERE $checkbox_value=1"; 

if($resultq = mysqli_query($link, $cb_query)) { 
    $s_count = mysqli_num_rows($resultq); 

    while($rowq = $resultq->fetch_array()) { 
     $testarray[] = $rowq["email_nonurgent"]; 
     $noDupes = array_unique($testarray); 
    } 

    print json_encode($noDupes); 
} 
} else { 
$cb_query = "SELECT email_urgent FROM client_addresses WHERE $checkbox_value=1";  

if($resultq = mysqli_query($link, $cb_query)) { 
    $s_count = mysqli_num_rows($resultq); 

    while($rowq = $resultq->fetch_array()) { 
     $testarray[] = $rowq["email_urgent"]; 
    } 

    print json_encode($testarray); 
} 
} 

?> 

С 2 флажков щелкнул, вполне возможно, что я получаю дубликаты адресов электронной почты, которые находятся в том же массиве ($ testarray на странице php). Я искал по всему Интернету, но не мог узнать, что я делаю неправильно.

+0

Не могли бы вы включить код, где вы пытались использовать 'array_unique()'? Не забывайте, что он * возвращает * новый массив, вместо того, чтобы изменять тот, который вы передаете, в отличие от 'sort()'. –

+1

«... дублировать адреса электронной почты из массива». Какую конкретную переменную в приведенном выше коде вы указываете? – Steve

+0

Это много кода, но похоже, что ваша проблема может быть выражена [всего несколькими словами] (http://stackoverflow.com/questions/16063590). Кроме того, вы должны показать, что вы пробовали, потому что я не могу угадать, что может пойти не так с чем-то [так же просто, как 'array_unique()'] (http://stackoverflow.com/q/307650/1446005). – RandomSeed

ответ

0

Я не знаю, почему array_unique не работает для вас, но вы можете попробовать это по старинке, а не добавлять их в массив, в первую очередь, с чем-то вроде:

if(!in_array($theEmailAddress, $testarray)){ 
    // add to array 
} 
else{ 
    // more than likely a duplicate 
} 

Из любопытства, что делает array_unique, когда вы его использовали?

0

мог что-то вроде этого ...

$noDupes = array_map("unserialize", array_unique(array_map("serialize", $testarray))); 
+0

попробовал это, но сервер по-прежнему отправляет 2 письма одному получателю – Beeelze