2010-11-03 51 views
3

當使用foreach()循環和使用ob_start()和ob_get_clean()的循環內部循環時,我遇到了問題。ob_start()在循環內

這裏是我的功能:

protected function renderEmail() { 
$template = $this->_case.".php"; 
if(is_file($this->_dir.DS.$template)) { 
    ob_start(); 
    if(!empty($this->_records)) {    
     foreach($this->_records as $key => $value) { 
      ${$key} = $value; 
     } 
    } 
    require_once($this->_dir.DS.$template); 
    return ob_get_clean(); 
} else { 
    $this->_errors[] = "Email template not found"; 
    return false; 
} } 

這個功能基本上是生成電子郵件的內容,然後返回。

我遇到的問題是,當我通過一些電子郵件地址循環 - 發送相同的電子郵件內容 - 只有第一個返回內容 - 以下是空白 - 任何想法爲什麼?

回答

11

好的 - 你不會相信 - 一旦我發佈了這個問題 - 在我意識到問題出在哪裏之後 - 我使用require_once()函數 - 這可以防止再次包含同一個文件 - 一旦改爲include(),一切正常!

+0

同樣在這裏,pfff。所以thnx不刪除的問題:) – Grrrben 2015-02-04 13:00:43

+0

同樣...大聲笑:)))) – 2017-01-03 06:04:32

0

爲什麼循環?

extract($this->_records);

看起來比

foreach($this->_records as $key => $value) { 
    ${$key} = $value; 
} 

短,本地除了

了一下,後續代碼var_dump是一個很大的幫助的時候(你遇到麻煩,像這樣爲下一次): )

0

每次你要在一個循環內多次使用同一個文件,你不應該使用require_once()或include_once,而是使用「包含」,一切都會好的!