I think it’s the query in the foreach.
What if you change it to:
$args = array(
'posts_per_page' => -1,
'post_type' => 'your post type',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'price',
'value' => $price,
'compare' => '<='
),
)
);
Specify the post type and see if that works?
We know the data up to that point is right, so the issue is that query. Just need to tweak it