ホームページ  >  記事  >  バックエンド開発  >  欠落している列のデフォルト値を含む連想配列をマージするにはどうすればよいですか?

欠落している列のデフォルト値を含む連想配列をマージするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-20 21:38:30987ブラウズ

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

欠落している列のデフォルト値を使用して連想配列をマージする

複数の連想配列をマージし、欠落している列をデフォルト値で埋めるには、次の操作を実行できます。 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');

var_export を使用してこれらの配列をマージすると、

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

解決策

配列のキーを結合し、欠落している列を空の文字列で埋めるには、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>
これにより、目的の出力が生成されます:

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
        )
)
別のオプションは、空の値でキーペア値を作成し、それらをマージすることです:

<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>
これも生成されます同じ目的の出力。

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

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