【PHP】IDが一致した配列同士を結合する。配列にカラムを追加する


<?php

$cooking = [
  ["menu_id" => 40,"menu_name" => "お好み焼き","submenu_name" => "鰹節","drink" => "ハイボール"],
  ["menu_id" => 20,"menu_name" => "カレー","submenu_name" => "ライス","drink" => "烏龍茶"],
  ["menu_id" => 99,"menu_name" => "パスタ","submenu_name" => "タバスコ","drink" => "ビール"],
  ["menu_id" => 10,"menu_name" => "焼き肉","submenu_name" => "ソース","drink" => "ジンジャエール"],
  ["menu_id" => 30,"menu_name" => "寿司","submenu_name" => "醤油","drink" => "緑茶"],
  ["menu_id" => 50,"menu_name" => "サンドイッチ","submenu_name" => "ラー油","drink" => "紅茶"]
];

$add = [
    0 => [ 'id' => 10, 'age' => '1995年06月08日'],
    1 => [ 'id' => 20, 'age' => '2009年05月23日'],
    2 => [ 'id' => 30, 'age' => '2006年08月26日'],
    3 => [ 'id' => 40, 'age' => '1993年02月24日']
];


$add =  array_column($add, 'age', 'id');


foreach($cooking as $list ){
    if(!empty($add[$list['menu_id']])){
        $result[] = $list + ['age' => $add[$list['menu_id']]];
    }
};


var_dump($result);

結果

array(4) {
  [0]=>
  array(5) {
    ["menu_id"]=>
    int(40)
    ["menu_name"]=>
    string(15) "お好み焼き"
    ["submenu_name"]=>
    string(6) "鰹節"
    ["drink"]=>
    string(15) "ハイボール"
    ["age"]=>
    string(17) "1993年02月24日"
  }
  [1]=>
  array(5) {
    ["menu_id"]=>
    int(20)
    ["menu_name"]=>
    string(9) "カレー"
    ["submenu_name"]=>
    string(9) "ライス"
    ["drink"]=>
    string(9) "烏龍茶"
    ["age"]=>
    string(17) "2009年05月23日"
  }
  [2]=>
  array(5) {
    ["menu_id"]=>
    int(10)
    ["menu_name"]=>
    string(9) "焼き肉"
    ["submenu_name"]=>
    string(9) "ソース"
    ["drink"]=>
    string(21) "ジンジャエール"
    ["age"]=>
    string(17) "1995年06月08日"
  }
  [3]=>
  array(5) {
    ["menu_id"]=>
    int(30)
    ["menu_name"]=>
    string(6) "寿司"
    ["submenu_name"]=>
    string(6) "醤油"
    ["drink"]=>
    string(6) "緑茶"
    ["age"]=>
    string(17) "2006年08月26日"
  }
}