Nie ma sensu robić 2 zapytań. To które jest teraz jest ok, po prostu przy fetchowaniu danych trzeba je odpowiednio pogrupować:
$connect = @new mysqli($host, $db_user, $db_password, $db_name);
$result = $connect->query("SELECT p.id, p.name, d.domain_name FROM domains d LEFT JOIN persons p ON d.id_person = p.id");
$results = [];
while ($row = $result->fetch_assoc()) {
$results[[$row['id']]] = [
'name' => $row['name'],
'domains' => []
];
}
$results[$row['id']]['domains'][] = $row['domain_name'];
}
Mniej-wiecej tak.