WP_Post is not from correct array

get_the_ID gives you the ID of the current post, but at no point during that loop do you change what the current post is. It’s always the last post processed in the previous loop because that’s the last time you called the_post(). This is why you always get the same ID.

Instead, store the ID:

$results[$key]['ID'] = $value->ID;

Then echo that instead:

foreach ($results as $key => $value) {
    echo $value['ID'];
}

Another important issues is that you’re using $results[$key] but you never assign it an initial value, and assume it’s an array, you should initialise it using $results[$key] = arrayy(); first