2016-06-28 15 views
2

Ich habe zwei Arrays $ $ first und second wie unten:Array Kreuzung in mehrdimensionalen Arrays mit PHP

[$firstarray = 0] => Array (
[id] => 1.25 
[Name] => rose 
[Number] => 15 
[DOB] => Array (
    [0] => Array (
     [Day] => 13 
     [Month] => 5 
     [Year] => 1993 
     ) 
    ) 
[SSN] => Array (
    [0] => 12345 
    [1] => 3455 
    ) 
) 
[1] => Array (
    [id] => 1.15 
    [Name] => orchid 
    [Number] => 7 
    [DOB] => Array (
    [0] => Array (
     [Day] => 3 
     [month] => 7 
     [Year] => 1912 
     ) 
    ) 
[SSN] => Array (
    [0] => 12365 
    [1] => 3465 
    ) 
) 





$secondarray = Array ([Day] => 13 [Month] => 5 [Year] => 1993) 

i möchte mfirstarray durchlaufen und dann Array mit jedem Element schneiden in first mit dem zweiten Array.

foreach ($firstarray as $item) { 

     print_r(array_intersect_assoc($secondarray, $item); 
    } 

was mein Problem ist, die beiden Arrays nur in der ersten Iteration schneiden sollte, aber mein Code in allen Iterationen schneidet. Ich denke, dass es nur die Schlüssel schneidet, d. h. Tag, Monat, Jahr. Wie kann ich prüfen, ob Werte werden auch matched.van mir jemand helfen

Antwort

1

Ist das, was Sie suchen

$result = array(); 
foreach ($firstarray as $item) { 
    $instersectArray=array_intersect_assoc($secondarray,$item['DOB'][0]); 
    if($instersectArray){ 
     $result[] = $item; 
    } 
} 
print_r($result); 

prüfen Demo

Wenn Sie nur ein Spiel benötigen

$result = array(); 
foreach ($firstarray as $item) { 
    $instersectArray=array_intersect_assoc($secondarray,$item['DOB'][0]); 
    if($instersectArray && empty($result)){ 
     $result[] = $item; 
    } 
} 
print_r($result); 

Überprüfen Demo

Verwandte Themen