ホームページ >バックエンド開発 >PHPチュートリアル >連想配列をマージし、欠落している列をデフォルト値で追加するにはどのような手法を使用できますか?

連想配列をマージし、欠落している列をデフォルト値で追加するにはどのような手法を使用できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-20 21:42:29661ブラウズ

What Techniques Can I Use to Merge Associative Arrays and Add Missing Columns with Default Values?

連想配列をマージし、欠落している列をデフォルト値で追加する

すべての一意のキーを保持しながら複数の連想配列をマージし、欠落している列をデフォルト値で追加するさまざまなテクニックを使用して実現できます。これを達成するための 2 つの方法を見てみましょう。

方法 1: array_merge と RecursiveIterationIterator を使用する

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

このアプローチでは、まず RecursiveIteratorIterator を array_merge と組み合わせて使用​​して、すべての一意のキーを識別します。各連想配列で。次に、識別されたキーを使用して空の配列 ($keys) を初期化します。続いて、$d 内の各配列を反復処理し、$keys 配列と各配列の値を結合して、目的の形式を取得します。

方法 2: array_combine と array_map を使用する

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

このアプローチでは、array_keys を使用して、マージされた配列内のすべての一意のキーの和集合を決定します。次に、array_combine を利用して、キーが一意のキーであり、値が null であるキーと値のペアを作成します。最後に、array_map を使用して $d を反復処理し、キーと値のペア ($key_pair) を $d 内の各連想配列と結合し、目的の形式になります。

以上が連想配列をマージし、欠落している列をデフォルト値で追加するにはどのような手法を使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。