做while while循环的替代方案?

时间:2015-10-13 14:09:04

标签: php conditional break do-while

我遇到了一段代码,它通过一个从查询中获取结果的方法(表有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);
}

这是正确的方法吗?或者有没有更好的方法来编写这种方法避免无限循环? 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

不需要do-while,您只需使用while方法作为条件,因为当数组为空时它将返回false条件。我会做以下事情:

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

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