連想配列と異なるキーのセットを組み合わせて統合配列を作成するのは難しい場合があります。この質問では、これを実現する方法を検討します。目的の出力は、キーがマージされ、欠落している列がデフォルト値で埋められる配列です。
これを達成するには、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 配列とマージされ、前のアプローチと同じ結果が得られます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3