連想配列と異なるキーのセットを組み合わせて統合配列を作成するのは難しい場合があります。この質問では、これを実現する方法を検討します。目的の出力は、キーがマージされ、欠落している列がデフォルト値で埋められた配列です。
これを達成するには、array_merge 関数を併用することが提案されました。慎重に作成されたキーの配列を使用します:
$keys = array(); foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) { $keys[$key] = ''; }
このループは、入力配列内のすべての要素を反復処理し、一意のキーを抽出して空の値を割り当てます。結果の $keys 配列には、最終的にマージされた配列に存在する可能性のあるすべてのキーが含まれます。
次に、各入力配列が $keys 配列とマージされます。
$data = array(); foreach($d as $values) { $data[] = array_merge($keys, $values); }
このステップにより、次のことが保証されます。最終的な配列のすべての行には、考えられるすべてのキーが含まれており、欠落している値は空の文字列で埋められます。結果の $data 配列は、マージされ完成した目的の配列です。
あるいは、キーペア配列を作成して、各入力配列とマージすることもできます。
$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);
このメソッドは基本的に、可能なすべてのキーを null 値にマップします。その後、各入力配列が $key_pair 配列とマージされ、前のアプローチと同じ結果が得られます。
以上が連想配列をマージし、欠落しているキーを処理し、デフォルト値を入力する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。