Heim >Backend-Entwicklung >PHP-Tutorial >Wie füge ich assoziative Arrays mit fehlenden Spalten zusammen und gebe Standardwerte an?

Wie füge ich assoziative Arrays mit fehlenden Spalten zusammen und gebe Standardwerte an?

Barbara Streisand
Barbara StreisandOriginal
2024-10-20 21:40:02755Durchsuche

How to Merge Associative Arrays with Missing Columns and Provide Default Values?

Assoziative Arrays mit fehlenden Spalten und Standardwerten zusammenführen

Bei einem gegebenen Array assoziativer Arrays besteht die Aufgabe darin, diese zu kombinieren, die Array-Schlüssel zusammenzuführen und die fehlenden Spalten zu füllen mit einem Standardwert.

<code class="php">$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');

$d = array($a, $b, $c);</code>
var_export($d)

gibt aus:

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 gewünschte Ausgabe ist:

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
        )
)

Um dies zu erreichen, array_merge() kann verwendet werden.

<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);
}
echo '<pre class="brush:php;toolbar:false">';
print_r($data);</code>

Eine alternative Methode besteht darin, Schlüsselpaarwerte zu erstellen und dann jedes $d zuzuordnen und 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>

Das obige ist der detaillierte Inhalt vonWie füge ich assoziative Arrays mit fehlenden Spalten zusammen und gebe Standardwerte an?. 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