It's all a bit more complicate because the actual arrays of objects are got from ajax into PHP, but, I found myself the answer based on KennyDope suggestion.
If Array1 is $expenses_obj and Array2 is $invoice_taxes_obj
foreach ($expenses_obj as $key => $expense):
foreach ($invoice_taxes_obj as $key => $tax):
if ($expense->expense_id == $invoice_taxes_obj[$key]->expense_id){
$expense->taxes[] = (array)$invoice_taxes_obj[$key];
}
endforeach;
endforeach;
And the final result is what I need:
Array
(
[0] => stdClass Object
(
[expense_id] => 475
[expense_name] => DRAY
[expense_unit_cost] => 270.00
[taxes] => Array
(
[0] => Array
(
[waybill_id] => 20005044
[expense_id] => 475
[tax_select] => tax1
[tax_id] => 1
[tax_name] => GST 5%
[tax_no] =>
[tax_value] => 13.5000
)
[1] => Array
(
[waybill_id] => 20005044
[expense_id] => 475
[tax_select] => tax2
[tax_id] => 2
[tax_name] => QST 9.975%
[tax_no] =>
[tax_value] => 26.9325
)
)
)
[1] => stdClass Object
(
[expense_id] => 476
[expense_name] => FUEL
[expense_unit_cost] => 32.40
[taxes] => Array
(
[0] => Array
(
[waybill_id] => 20005044
[expense_id] => 476
[tax_select] => tax1
[tax_id] => 1
[tax_name] => GST 5%
[tax_no] =>
[tax_value] => 1.6200
)
[1] => Array
(
[waybill_id] => 20005044
[expense_id] => 476
[tax_select] => tax2
[tax_id] => 2
[tax_name] => QST 9.975%
[tax_no] =>
[tax_value] => 3.2319
)
)
)
)
Your comments are welcomed. Thanks for your input.