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 に答える