Das Kombinieren assoziativer Arrays mit unterschiedlichen Schlüsselsätzen zum Erstellen eines einheitlichen Arrays kann eine Herausforderung sein. In dieser Frage wird eine Methode untersucht, um dies zu erreichen. Die gewünschte Ausgabe ist ein Array, in dem Schlüssel zusammengeführt und fehlende Spalten mit einem Standardwert gefüllt werden.
Um dies zu erreichen, wurde vorgeschlagen, die Funktion array_merge in Verbindung zu verwenden mit einem sorgfältig erstellten Array von Schlüsseln:
$keys = array(); foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) { $keys[$key] = ''; }
Diese Schleife durchläuft alle Elemente in den Eingabearrays, extrahiert die eindeutigen Schlüssel und weist ihnen leere Werte zu. Das resultierende $keys-Array enthält alle möglichen Schlüssel, die im endgültigen zusammengeführten Array vorhanden sein können.
Als nächstes wird jedes Eingabearray mit dem $keys-Array zusammengeführt:
$data = array(); foreach($d as $values) { $data[] = array_merge($keys, $values); }
Dieser Schritt stellt sicher, dass jede Zeile im endgültigen Array alle möglichen Schlüssel hat, wobei alle fehlenden Werte mit einer leeren Zeichenfolge aufgefüllt werden. Das resultierende $data-Array ist das gewünschte zusammengeführte und vervollständigte Array.
Alternativ kann ein Schlüsselpaar-Array erstellt und mit jedem Eingabearray zusammengeführt werden:
$keys = array_keys(call_user_func_array('array_merge', $d)); $key_pair = array_combine($keys, array_fill(0, count($keys), null)); $values = array_map(function($e) use ($key_pair) { return array_merge($key_pair, $e); }, $d);
Diese Methode erstellt im Wesentlichen eine Zuordnung aller möglichen Schlüssel zu Nullwerten. Jedes Eingabearray wird dann mit dem Array $key_pair zusammengeführt, wodurch das gleiche Ergebnis wie beim vorherigen Ansatz erzielt wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3