0
0

More than 1 year has passed since last update.

【PHP】2次元連想配列の結合(array_replace_recursiveで異なるキーの値を残して結合)

Last updated at Posted at 2021-09-21

実現したいこと

多次元配列の内側の配列にも再帰的に結合を行いたい。
下記の配列$status$orders_countという2次元の連想配列を、$resultという配列のように結合したい。

一つ目の配列

$status = [
    [
    "status" => 1,
    "name" => "ステータス1",
    ],
    [
    "status" => 2,
    "name" => "ステータス2",
    ],
    [
    "status" => 3,
    "name" => "ステータス3",
    ]
];

二つ目の配列

$orders_count = [
    [
    "orders_count" => 40,
    ],
    [
    "orders_count" => 30,
    ],
    [
    "orders_count" => 20,
    ]
]

欲しい結合結果

$result = [
    [
    "status" => 1,
    "name" => "ステータス1",
    "orders_count" => 40,
    ],
    [
    "status" => 2,
    "name" => "ステータス2",
    "orders_count" => 30,
    ],
    [
    "status" => 3,
    "name" => "ステータス3",
    "orders_count" => 20,
    ]
]

array_replace_recursiveで対応

array_replace_recursive()という関数を使って結合する。

$result = array_replace_recursive($status, $orders_count);

第一引数に指定した配列に対して、第二引数の配列が下記の条件で結合される。

  • 最初の配列のキーと同じキーが2番目の配列にあれば、2番目の配列の値が最初の配列の値を上書きする
  • 2番目の配列に存在するキーが最初の配列に存在しなければ、 そのキーが新たに最初の配列内に作られる
  • 置き換え用の配列が複数渡された場合は渡した順に処理を行い、 後から渡した配列の値のほうが優先される

今回はキーの重複はないので、1番目の配列に2番目の配列の中身が追加される。

参考

PHP公式リファレンス:array_replace_recursive

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0