2017-08-28 1 views
-3

Ich habe zwei Arrays, die ich zusammenführen möchte. Ich habe die ersten durch eine für() Schleife, so dass er die letzten sieben Tage umfasst (nur drei hier, um es zu halten kurz):Verschmelzen Sie zwei Arrays, wenn die Zeichenfolge identisch ist

array(7) { 
    [0]=> 
    array(2) { 
    ["created_at"]=> 
    string(10) "2017-08-15" 
    ["errorCount"]=> 
    string(1) "0" 
    } 
    [1]=> 
    array(2) { 
    ["created_at"]=> 
    string(10) "2017-08-16" 
    ["errorCount"]=> 
    string(1) "0" 
    } 
    [2]=> 
    array(2) { 
    ["created_at"]=> 
    string(10) "2017-08-17" 
    ["errorCount"]=> 
    string(1) "0" 
    } 
} 

Die anderen Array enthalten Daten aus einer DB:

array(2) { 
    [0]=> 
    array(2) { 
    ["created_at"]=> 
    string(10) "2017-08-15" 
    ["errorCount"]=> 
    string(1) "4" 
    } 
    [1]=> 
    array(2) { 
    ["created_at"]=> 
    string(10) "2017-08-16" 
    ["errorCount"]=> 
    string(1) "12" 
    } 
} 

Ich möchte diese beiden zusammen, so dass errorCount in der ersten Array wird überschrieben, wenn created_at ist identisch. Ich habe es mit array_merge() direkt versucht, aber es fügt nur die Reihen des zweiten Feldes dem Ende des ersten hinzu.

Irgendwelche Vorschläge, wie man das löst? Oder gibt es eine andere Herangehensweise?

+1

Hinweis: 'array ('2017.08.15' => 4, ...)'. Mit einer alternativen Array-Struktur wird die Antwort trivialerweise offensichtlich ... – deceze

Antwort

0

Filter Ergebnis durch folgende Anweisung:

$finArray = array_values(array_combine(array_map(function ($value) { 
    return $value['created_at']; 
}, $mergedArray), $mergedArray)); 
Verwandte Themen