UA.ProGВыполнение тела цикла перед проверкой условия или после в данном случае роли не играет: сначала все равно будет присвоено значение, а потом произойдет проверка условия, которое вернет false.
Все же первоначальный вариант был с косяком - последнему элементу массива сначала присваивается пустое значение, а уже затем проверяется условие которое возращает false. Получается в массиве количество элементов на 1 больше, чем количество записей. Видимо, самый адекватный вариант -