使用while或foreach时,result_gnray在result_array中的区别

时间:2013-01-25 19:41:52

标签: php codeigniter

我的模型中有这个功能:

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确实有效。但基本上这应该和正确的时候一样? 当像这样访问它时,使用foreach:

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

1 个答案:

答案 0 :(得分:1)

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

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