1

我的模型中有这个功能:

public function get_current_knowledge($account_id)
{
    $query = $this->db->query('SELECT * FROM knowledge WHERE account_id = ?', array($account_id));

    return $query->result_array();
}

我曾经像这样访问它:

while ($record = $this->synchronization_model->get_current_knowledge($account['id'])) {
    print_r($record);
}

但奇怪的是,我的页面可能会超时,因为 while 会导致无休止的循环或其他什么?但为什么是这个问题。

我注意到 foreach 确实有效。但本质上,这应该与 while 一样返回,对吗?当像这样访问它时,使用foreach:

foreach ($this->synchronization_model->get_current_knowledge($account['id']) as $row)
{
     print_r($row);
}
4

1 回答 1

1

while()只要括号内的内容是真实的,循环就会运行。

每次循环运行时,您都将值分配给$this->synchronization_model->get_current_knowledge($account['id'])变量。$record当然,变量有一个值(因为你正在分配它),所以它总是真实的。这就是你得到无限循环的地方。

于 2013-01-25T19:47:58.730 回答