2012-08-09 2 views
0

내 문제는 개체의 2D 배열에서 일부 사용자의 전자 메일을 가져 오는 중이지만 중복되거나 가져 오지 않는 것입니다. 그들은 각각 이메일을 반향하는 그들에게 보낸 이메일이 아닌 이상 12 차원 배열을 고유 값과 비교하려면 어떻게해야합니까?

내 현재 코드가 필요합니다 : 그 도움이 될 경우 나는 CodeIgniter의 프레임 워크를 사용하고

for ($row = 0; $row < count($results); $row++){ 
    for($col = 0; $col < count($results[$row]); $col++){ 
     foreach($results[$row][$col]->result() as $user){ 
       echo "<p>".$user->email."</p>"; 
     } 
    } 
} 

. 나는 array_diff() 함수와 array_unique()를 찾았지만 array_unique()는 2 차원 배열을 취하지 않을 것입니다. 또는 적어도 문서는 그것을 위해 설계되지 않았다고 말합니다. 어떤 제안?

각 $ 결과 [$ row]는 고유하지만 문제는 하나의 $ 행이 다른 행과 동일한 이메일 주소를 가질 수 있으며 나는 원하지 않는다는 것입니다. 미리 감사드립니다!

+0

전자 메일 주소 목록을 어떻게 생성합니까? 데이터베이스 쿼리에서? – andrewsi

답변

0

가능한 해결 방법은 (당신이을 비교하는 전용 이메일 주소가있는 경우 )이다 key가와 valueoriginal key (해당 이메일 주소와 배열의 키)를 나타냅니다 한 희미한 배열을 구성하는 것입니다 email address 자체입니다.

보다이 일차원 배열array_unique()를 적용하고 이후에 어레이의 통합 후에 남은 유일한 키를 사용하여 필요한 구조 다차원 배열로 다시이 배열을 분석.

0

것은 당신이 데이터베이스에서 당신의 이메일 목록을 얻는 경우, 같은 쿼리에 distinct를 추가 : 다음

$query = "SELECT DISTINCT email FROM emailTable"; //Add other fields to select as needed 

// Add this piece to order them. Not sure if you'd need it or not 
$query .= " ORDER BY email ASC"; 

$result = query_db($query); 

을 당신이 알고있는 각 $row이 고유 당신의 $result 배열에

0

이의이를 해보자 :

$existing_emails = array(); 
for ($row = 0; $row < count($results); $row++){ 
    for($col = 0; $col < count($results[$row]); $col++){ 
     foreach($results[$row][$col]->result() as $user){ 
      if(! isset($existing_emails[ $user->email ])) { 
       $existing_emails[ $user->email ] = 1; 
       echo "<p>".$user->email."</p>"; 
      } 
     } 
    } 
} 

우리가 지금까지 처리 한 전자 메일을 기억하도록 연관 배열을 유지하여 아무 것도 보내지 않습니다. 다시 그들에게.

+0

그가이 사람 목록을 전자 메일로 보내고 있다면 우리는 결과를 쉽게 액세스 배열에 보관하려고합니다. 우리는'$ existing_array'의 키를 볼 수 있다고 생각하지만, 키를 카운터로 설정하고 배열의 값을 전자 메일로 설정하는 것이 더 쉽습니다. – DACrosby

+0

고마워요! 그것은 잘됐다! 더글러스 A. 크로스비 (Douglas A. Crosby)가 이메일을 보내면 쉽게 접근 할 수있을 것입니다. 나는 그들을 빼내기 위해 foreach를해야할까요? – user1588572

+0

좋아, 내가 변경 한 것은 $ existing_emails [$ user-> email]에 1의 값을 저장하는 것이 아니라 다음을 수행했습니다. $ existing_emails [$ user-> email] = $ user-> email foreach 루프를 통과 할 때 나는 그들을 한 번만 이메일로 보낼 수 있습니다. 모두 감사합니다! – user1588572

관련 문제