This reason for this is because the repeater field is not being ‘cleared’ because you are using ‘break’ to end the loop early. Then when you loop through the repeater field again, it continues from where it is up to. Does this make sense?
To fix the issue, you will need to either not use has_sub_field and instead, use a simple foreach loop (please see repeater field docs for this)
or, you can not use break, but wrap your sub field code within an if statement to only work when $i<0
Hope that helps.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users