Вы можете попробовать это:
Тестовые массивы :
$array_1 = [
0 => [
"hID" => 107,
"env" => "DEV",
"serv" => "server1"
],
1 => [
"hID" => 122,
"env" => "DEV",
"serv" => "server2"
]
];
$array_2 = [
0 => [
"hID" => 107,
"cpu" => 32,
"mem" => 24
],
1 => [
"hID" => 122,
"cpu" => 16,
"mem" => 24
]
];
Код для объединения обоих массивов :
$new_array = [];
for($i=0;$i<count($array_1);$i++) {
for($j=0;$j<count($array_2);$j++) {
if ($array_1[$i]['hID'] === $array_2[$j]['hID']) {
$new_array[] = array_merge($array_1[$i], $array_2[$j]);
}
}
}
Выход:
var_dump($new_array);
array(2) {
[0]=>
array(5) {
["hID"]=>
int(107)
["env"]=>
string(3) "DEV"
["serv"]=>
string(7) "server1"
["cpu"]=>
int(32)
["mem"]=>
int(24)
}
[1]=>
array(5) {
["hID"]=>
int(122)
["env"]=>
string(3) "DEV"
["serv"]=>
string(7) "server2"
["cpu"]=>
int(16)
["mem"]=>
int(24)
}
}
Тест здесь: http://sandbox.onlinephpfunctions.com/