2016-05-04 20 views
0

Ich habe zwei Arrays. Ich muss ein Element aus dem ersten Array entfernen, wenn das Element im zweiten Array enthalten ist.Wie kann ein Array-Element aus einem Vergleich mit einem anderen Array-Element entfernt werden?

z.B .:

$First = array("apple"=>"7", "orange"=>"8", "strawberry"=>"9", "lemon"=>"10", "banana"=>"11"); 

$Second = array("orange"=>"1", "lemon"=>"1","banana"=>"1"); 

$Result = array("apple"=>"7","strawberry"=>"9"); 

Ich habe den folgenden Code verwendet, aber es funktioniert nicht:

foreach($Second as $key){ 
    $keyToDelete = array_search($key, $First); 
    unset($First[$keyToDelete]); 
} 
print_r($First); 

Antwort

2

Sie sind in Ihrer Nähe!

Erstens

foreach ($Second as $key) 

werden Sie nur den Wert geben. Um den Schlüssel zu erhalten haben Sie

foreach ($Second as $key => $value) 

Schleife durch das $ Second-Array zu tun und dann, wenn sie Schlüssel vorhanden ist (verwenden isset) in $ Ersten Array entfernt es unset verwenden. $ Zweitens wird dann der gleiche sein wie $

Ergebnisse
foreach ($Second as $key => $value) { 
    if (isset($First[$key])) { 
     unset($First[$key]); 
    } 
} 

Alternativ, wenn Sie Sie $ Erste und $ Zweitens, wie sie sind, dann können halten wollten wie folgt vorgehen:

foreach ($Second as $key => $value) { 
    if (!isset($First[$key])) { 
     $Results[$key] = $value; 
    } 
} 
+0

Ja, es ist Arbeit für mich ... Vielen Dank ... @ rharvey –

+2

Wenn Sie Unscharfstellen, dann haben Sie Daten verloren. –

+0

aber in meinem Fall Daten stammen von db und ich nur für Show mit entfernen Duplikation verwendet. –

7

Verwendung array_diff_key - http://php.net/manual/en/function.array-diff-key.php

$First = array("apple"=>"7", "orange"=>"8", "strawberry"=>"9", "lemon"=>"10", "banana"=>"11"); 
$Second = array("orange"=>"1", "lemon"=>"1","banana"=>"1"); 
$Result = array_diff_key($First, $Second); 
+0

nette Antwort. +1 up –

+0

mein schlecht, geändert zu 'array_diff_key' - überprüft es jetzt, Ergebnis ist das gleiche wie von OP gewünscht – Mark

+0

auch den oberen Teil –

Verwandte Themen