Zusammenführen von zwei arrays in PHP
Ich versuche, erstellen Sie ein neues array aus zwei aktuellen arrays. Versucht array_merge, aber es wird mir nicht, was ich will. $array1
ist eine Liste von keys, die ich übergeben an eine Funktion. $array2
hält die Ergebnisse aus dieser Funktion, aber nicht enthalten keine nicht verfügbar resuls für Schlüssel. Also, ich möchte sicherstellen, dass alle angeforderten Schlüssel heraus kommt mit 'null':ed-Werte, als nach der gezeigten $result
array.
Geht es ein wenig so etwas wie dieses:
$array1 = array('item1', 'item2', 'item3', 'item4');
$array2 = array(
'item1' => 'value1',
'item2' => 'value2',
'item3' => 'value3'
);
Hier ist das Ergebnis möchte ich:
$result = array(
'item1' => 'value1',
'item2' => 'value2',
'item3' => 'value3',
'item4' => ''
);
Kann es auf diese Weise getan, aber ich glaube nicht, dass es eine gute Lösung - ich weiß wirklich nicht, wie zu nehmen Sie den einfachen Weg und unterdrücken, PHP Fehler durch das hinzufügen von @:s in den code. Dieses Beispiel wäre natürlich werfen Fehler, da 'item4'
ist nicht in $array2
am Beispiel.
foreach ($keys as $k => $v){
@$array[$v] = $items[$v];
}
So, was ist am schnellsten (performance-wise) Weg, um zu erreichen das gleiche Ergebnis?
Du musst angemeldet sein, um einen Kommentar abzugeben.
array_fill_keys
bauen Sie ein schönes array, das Sie verwenden können, inarray_merge
:Oder statt array_merge, können Sie die
+
op führt eine union:Dieser arbeitet mit numerischen Tasten oder gemischte numerische/Saiten 🙂
+
scheint gut zu funktionieren mit einem mixed-array auszubauen.Statt zu werfen, Fehler zu überprüfen, dass der Schlüssel Ausgängen mit array_key_exists
In diesem Fall können Sie array_merge und array_fill_keys:
Sollten Sie sich bewusst sein, dass mit array_merge der Wert im letzteren array überschreiben der ersten, nur, wenn der Schlüssel nicht zahlen und daher diese Methode funktioniert nicht, wenn $array1 enthält numerische Werte. Zum Beispiel mit den folgenden Werten in Eingang, dieser code funktioniert nicht richtig:
Erhalten Sie Folgendes:
}
Wenn Sie sicher sind, dass die array-keys sind alle Literale können Sie es verwenden, ohne sorgen
Können Sie
array_merge()
zum Zusammenführen von einem oder mehreren arrays.In den Fällen, in denen, die nicht arbeiten, Sie sind nicht mit array_fill_keys oder eine ähnliche Funktion, die zurückgibt, gibt ein array zurück geben, Sie können eine Umwandlung in array.
Haben Sie sich array_combine? Hier ist ein link: PHP Referenz
Es scheint genau das zu tun, was Sie wollen, mit einer Einschränkung: Wenn die beiden arrays nicht gleich groß, es tut sich nix. Wenn sichergestellt ist, dass das array von Tasten wird immer länger sein als dein array von Werten, Sie könnten einfach ein pad das Werte-array mit null-Werten, bis beide arrays die gleiche Größe haben, vor dem Aufruf array_combine.