You iterate through posts obtained by the get_posts()
, so you have to pass post ID as the second parameter of the function have_rows()
.
By default ID of current post is used.
foreach ($articles as $article) {
$value = null;
if( have_rows( 'info_items', $article->ID ) ):
while( have_rows( 'info_items', $article->ID ) ): the_row();
$value = get_sub_field('info_location');
endwhile;
endif;
echo "<br>{$article->ID} ";
var_dump($value);
}