我的模型中有这个功能:
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);
}
答案 0 :(得分:1)
只要括号内的任何内容都是真实的,while()
循环就会运行。
每次循环运行时,您都会将$this->synchronization_model->get_current_knowledge($account['id'])
的值赋给变量$record
。当然,变量有一个值(因为你正在分配它),所以它总是真实的。这就是你获得无限循环的地方。