Heim  >  Artikel  >  Backend-Entwicklung  >  Wie füge ich assoziative Arrays mit Standardwerten für fehlende Spalten zusammen?

Wie füge ich assoziative Arrays mit Standardwerten für fehlende Spalten zusammen?

Susan Sarandon
Susan SarandonOriginal
2024-10-20 21:38:30987Durchsuche

How to Merge Associative Arrays with Default Values for Missing Columns?

Assoziative Arrays mit Standardwerten für fehlende Spalten zusammenführen

Um mehrere assoziative Arrays zusammenzuführen und fehlende Spalten mit einem Standardwert auszufüllen, können Sie dies tun Nutzen Sie die Leistungsfähigkeit der Array-Funktionen von PHP.

Das Problem

Berücksichtigen Sie die folgenden Arrays:

$a = array('a' => 'some value', 'b' => 'some value', 'c' => 'some value');
$b = array('a' => 'another value', 'd' => 'another value', 'e' => 'another value', 'f' => 'another value');
$c = array('b' => 'some more value', 'x' => 'some more value', 'y' => 'some more value', 'z' => 'some more value');

Wenn Sie diese Arrays mit var_export zusammenführen, Sie erhalten:

array (
  0 => 
  array (
    'a' => 'some value',
    'b' => 'some value',
    'c' => 'some value',
  ),
  1 => 
  array (
    'a' => 'another value',
    'd' => 'another value',
    'e' => 'another value',
    'f' => 'another value',
  ),
  2 => 
  array (
    'b' => 'some more value',
    'x' => 'some more value',
    'y' => 'some more value',
    'z' => 'some more value',
  ),
)

Die Lösung

Um die Array-Schlüssel zu kombinieren und fehlende Spalten mit einer leeren Zeichenfolge zu füllen, können Sie array_merge:

<code class="php">$keys = array();
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) $keys[$key] = '';
$data = array();
foreach($d as $values) {
    $data[] = array_merge($keys, $values);
}</code>
Dies wird die gewünschte Ausgabe erzeugen:

Array
(
    [0] => Array
        (
            [a] => some value
            [b] => some value
            [c] => some value
            [d] => 
            [e] => 
            [f] => 
            [x] => 
            [y] => 
            [z] => 
        )

    [1] => Array
        (
            [a] => another value
            [b] => 
            [c] => 
            [d] => another value
            [e] => another value
            [f] => another value
            [x] => 
            [y] => 
            [z] => 
        )

    [2] => Array
        (
            [a] => 
            [b] => some more value
            [c] => 
            [d] => 
            [e] => 
            [f] => 
            [x] => some more value
            [y] => some more value
            [z] => some more value
        )
)
Eine andere Möglichkeit besteht darin, Schlüsselpaarwerte mit leeren Werten zu erstellen und diese zusammenzuführen:

<code class="php">$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);</code>
Dies wird ebenfalls produzieren die gleiche gewünschte Ausgabe.

Das obige ist der detaillierte Inhalt vonWie füge ich assoziative Arrays mit Standardwerten für fehlende Spalten zusammen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn