3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array1 = [ (object) [ 'expense_id' => 475, 'expense_name' => 'DRAY', 'expense_unit_cost' => 270.00 ], (object) [ 'expense_id' => 476, 'expense_name' => 'FUEL', 'expense_unit_cost' => 32.40 ], ]; $array2 = [ (object) [ 'waybill_id' => 20005044, 'expense_id' => 475, 'tax_select' => 'tax1', 'tax_id' => 1, 'tax_name' => 'GST 5%', 'tax_no' => null, 'tax_value' => 13.5000 ], (object) [ 'waybill_id' => 20005044, 'expense_id' => 475, 'tax_select' => 'tax2', 'tax_id' => 2, 'tax_name' => 'QST 9.975%', 'tax_no' => null, 'tax_value' => 26.9325 ], (object) [ 'waybill_id' => 20005044, 'expense_id' => 476, 'tax_select' => 'tax1', 'tax_id' => 1, 'tax_name' => 'GST 5%', 'tax_no' => null, 'tax_value' => 1.6200 ], (object) [ 'waybill_id' => 20005044, 'expense_id' => 476, 'tax_select' => 'tax2', 'tax_id' => 2, 'tax_name' => 'QST 9.975%', 'tax_no' => null, 'tax_value' => 3.2319 ], ]; $array1 = array_column($array1, null, 'expense_id'); foreach ($array2 as $obj) { if (isset($array1[$obj->expense_id])) { $array1[$obj->expense_id]->expense_taxes[] = $obj; } } var_export(array_values($array1));

preferences:
36.99 ms | 402 KiB | 5 Q