Альтернатива сделать пока цикл?

Я натолкнулся на фрагмент кода, который проходит через метод, который выбирает результаты запроса (таблица содержит 130000 записей) и использует цикл do while для этого.

public function updateTestData()
{
$limit = 1000;
$offset = 0;
$processedCount = 1;

do {
$idList = $this->getActiveIds($limit, $offset);

if (array() === $idList) {
break;
}

$count = count($idList);
$this->getLogger()->log("Fetching $count ids from db..", Zend_Log::DEBUG);

foreach ($idList as $contactId) {
//doing few log things
$processedCount++;
}

$offset = $offset + $limit;
} while (true);
}

Это правильный способ сделать это? Или есть лучший способ написать этот метод, избегая бесконечного цикла do while?
Любая помощь будет принята с благодарностью.

1

Решение

Нет необходимости do-whileВы можете просто использовать while с методом в качестве вашего условия, так как он вернет ложное условие, когда массив пуст. Я бы сделал следующее:

$limit = 1000;
$offset = 0;
$processedCount = 1;

while ($idList = $this->getActiveIds($limit, $offset)) {
$processedCount += count($idList);
$offset += $limit;
}
1

Другие решения

Других решений пока нет …