2015-01-06 92 views
-1

我想通過使用array_unique刪除PHP數組中的重複條目。不過,我有三個不同的數組:名稱,電子郵件和網站。如何刪除條目PHP數組並從其他數組中刪除這些條目?

Names 

Array 
(
    [0] => Blabla Company 
    [1] => Lawyer 
    [2] => Plumber 
    [3] => Plumber 
) 

Websites 

Array 
(
    [0] => Blabla.com 
    [1] => Lawyer.com 
    [2] => Plumber.com 
    [3] => 
) 

Emails 

Array 
(
    [0] => [email protected] 
    [1] => [email protected] 
    [2] => [email protected] 
    [3] => [email protected] 
) 

我想要做的就是讓array_unique採取電子郵件數組刪除重複的條目。但是,它將刪除的條目也必須在其他數組中刪除。所以在這個例子中,在email數組中array_unique函數將會刪除[3]。然後我想刪除[3]網站和名稱陣列,但我不知道如何做到這一點......

我想這樣做的原因是因爲我將使用數組作爲輸入一個SQL插入查詢。否則數組不匹配了,sql數據庫將是無用的。

+2

爲什麼你有3個具有相同密鑰索引的數組?更清潔的方式可能是有一個數組,例如array [0] => array('name'=>'Blabal','website'=>'blabl.com','emails'=>'[email protected]') ,... – donald123

+0

當您生成它們時,將電子郵件用作其他陣列的密鑰。刪除電子郵件數組。使用'array_keys()'與名稱或網站陣列來獲取電子郵件。 – axiac

回答

0

讓我們先加入所有三個數組,創建一個清潔和乾燥代碼:

$arrays = array(&$emails, &$names, &$websites); 
//Notice that I used the variables' references so I can modify them directly. 

而現在,讓我們使用array_unique在每一個數組變量。

foreach ($arrays as $id => $array) 
{ 
    $arrays[$id] = array_unique($array); 
} 

您的方法(使用電子郵件數組的非唯一值從名稱和網站數組中刪除值)是不必要的。通過查看您提供的數組,您可以簡單地在每個數組中使用array_unique函數,就像我上面所做的那樣。

此外,最好的做法是將用戶數據放在同一個數組中。 例如:

$user = array(
    "name" => "John Doe", 
    "email" => "[email protected]", 
    "website" => "example.com" 
); 

我希望這能解決你的問題。

最好的問候。

+0

非常感謝。它清除了重複項,但它仍然以三個數組的形式出現......我如何創建一個新的數組,例如您顯示的$ user? – NvdB31

+0

如果您從數據庫中獲取數據,它應該放在一個多維數組中。沒有100%有效的方法來關聯這些數組,因爲裏面沒有公共標識符。您可以嘗試使用正則表達式來匹配這些值,但這不是一種好的做法,並且可能每次都不起作用。 –

0
$name = array('Blabla Company','Plumber','Lawyer','Plumber','Foo'); 
$site = array('Blabla.com','Plumber.com','Lawyer.com','','foo.com'); 
$email = array('[email protected]','[email protected]','[email protected]','[email protected]','[email protected]'); 

$email = array_unique($email); 
$name = array_intersect_key($name, $email); 
$site = array_intersect_key($site, $email); 

var_dump($email, $name, $site); 

輸出:

array(4) { 
    [0]=> 
    string(15) "[email protected]" 
    [1]=> 
    string(16) "[email protected]" 
    [2]=> 
    string(15) "[email protected]" 
    [4]=> 
    string(11) "[email protected]" 
} 
array(4) { 
    [0]=> 
    string(14) "Blabla Company" 
    [1]=> 
    string(7) "Plumber" 
    [2]=> 
    string(6) "Lawyer" 
    [4]=> 
    string(3) "Foo" 
} 
array(4) { 
    [0]=> 
    string(10) "Blabla.com" 
    [1]=> 
    string(11) "Plumber.com" 
    [2]=> 
    string(10) "Lawyer.com" 
    [4]=> 
    string(7) "foo.com" 
} 
+0

非常感謝! – NvdB31