2015-05-10 85 views
-1

我有兩個數組,一個包含一個人的名字,另一個包含一個人的姓氏。PHP:檢查兩個數組的重複值

$firstname = array ("John", "Tom", "Ben", "John", "David", "Julie", "David"); 
$lastname = array ("Kennedy", "Hyde", "Hughes", "Harper" "Walter", "Weber", "Walter"); 

一個人的姓和名都具有相同指數(約翰·肯尼迪,湯姆·海德等)都陣列和我在尋找一種方式來查找重複值的數組$firstname中,這將是兩個Johns和兩個Davids,但是如果它們也是重複的,那麼我需要檢查$lastname以及相同的索引,所以輸出將是David Harper, David Harper

該數組可以包含大約50多個不同的名稱和姓氏。

在互聯網上找不到任何東西,我用盡了想法,任何幫助將不勝感激。

+0

如果兩個名稱都相同,你想要做什麼? – Rizier123

+0

沒什麼,他們需要跳過。 –

+0

如果你只是刪除它們,它也會起作用嗎? – Rizier123

回答

3

你必須做的第三陣列,處理即全名的結果值。下面的例子將返回兩個數組,重複陣列和fullnames陣列沒有重複:

<?php 

$firstname = array ("John", "Tom", "Ben", "John", "David", "Julie", "David"); 
$lastname = array ("Kennedy", "Hyde", "Hughes", "Harper", "Walter", "Weber", "Walter"); 
$fullname = array(); 
$duplicates = array(); 

// foreach time we have a first name. 
for ($i =0; $i < count($firstname); $i++){ 
    $fullname_tmp = $firstname[$i]." ".$lastname[$i]; 
    if (in_array($fullname_tmp, $fullname)){ 
     if (in_array($fullname_tmp, $duplicates)){ 
      $duplicates[] = $fullname_tmp; 
     } 
     else{ 
      $duplicates[] = $fullname_tmp; 
      $duplicates[] = $fullname_tmp; 
     } 

    } 
    else{ 
     $fullname[] = $fullname_tmp; 
    } 
} 

echo "<pre>\n duplicates \n"; 

print_r($duplicates); 

echo "\n full names \n"; 

print_r($fullname); 

的例子是使用in_array和一個簡單的for循環。

結算此DEMO

+0

我對這個應該做什麼有一個基本的想法,但由於某些原因'$ duplicates'是空的。 –

+0

@DeividasVysniauskas在演示中它不是空的!你用它測試代碼的價值是什麼? – SaidbakR

0

不簡單的array_unique解決你的問題?

$firstname = array ("John", "Tom", "Ben", "John", "David", "Julie", "David"); 
$lastname = array ("Kennedy", "Hyde", "Hughes", "Harper", "Walter", "Weber", "Walter"); 
var_dump(array_unique($firstname)); 
var_dump(array_unique($lastname)); 

和輸出將

array (size=5) 
    0 => string 'John' (length=4) 
    1 => string 'Tom' (length=3) 
    2 => string 'Ben' (length=3) 
    4 => string 'David' (length=5) 
    5 => string 'Julie' (length=5) 
array (size=6) 
    0 => string 'Kennedy' (length=7) 
    1 => string 'Hyde' (length=4) 
    2 => string 'Hughes' (length=6) 
    3 => string 'Harper' (length=6) 
    4 => string 'Walter' (length=6) 
    5 => string 'Weber' (length=5) 
+0

我認爲這個想法是消除具有共同的姓氏和姓氏共享相同的數組索引的元素。 – Drumbeg

+0

我不需要刪除重複項,我需要輸出重複項。所有不共享重複值的名稱和姓氏都可以刪除。 –