PHP array_replace ohne Schlüssel zu erstellen

8

Ich versuche, die Elemente eines Arrays mit Werten von einem anderen zu überschreiben - ohne zusätzliche Elemente im Prozess zu erstellen.

Zum Beispiel:

%Vor%

Fügen Sie die zu erstellenden Arrays zusammen:

%Vor%

Mit array_merge oder array_replace würden die Elemente ordnungsgemäß überschrieben, aber das resultierende Array würde Elemente enthalten, die nicht im ersten Array gefunden wurden.

Wie kann ich zwei Arrays kombinieren, um ein Array zu erstellen, das nur Schlüssel aus dem ersten Array und die entsprechenden Werte aus einem zweiten Array enthält?

Gibt es eine vorhandene PHP-Array-Funktion, die das kann?

Danke für Ihre Hilfe!

    
Jason 14.08.2013, 19:23
quelle

5 Antworten

13

Sie können array_intersect_key und array_merge um es zu tun:

%Vor%

array_intersect_key isoliert diese Elemente von $replace mit Schlüsseln, die bereits in $base vorhanden sind (stellt sicher, dass neue Elemente nicht im Ergebnis erscheinen) und array_merge ersetzt die Werte in $base durch diese neuen Werte von $replace (während sichergestellt wird, dass Schlüssel, die nur in $base erscheinen, ihre ursprünglichen Werte beibehalten).

Sehen Sie es in Aktion .

Es ist interessant festzustellen, dass das gleiche Ergebnis auch mit der umgekehrten Reihenfolge der Aufrufe erreicht werden kann:

%Vor%

Allerdings macht diese Version etwas mehr Arbeit, also empfehle ich die erste.

    
Jon 14.08.2013, 19:31
quelle
3
%Vor%     
coderkane 14.08.2013 19:31
quelle
0

Ich kann mir dafür keine eingebaute Methode vorstellen, aber es wäre trivial mit einer Schleife und array_key_exists .

%Vor%     
kmfk 14.08.2013 19:27
quelle
0

Folgendes sollte es tun:

%Vor%     
noz 14.08.2013 19:30
quelle
0

Versuchen Sie Folgendes:

%Vor%     
tim 30.06.2017 22:07
quelle

Tags und Links