ob_start()在循环内

问题描述:

当使用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; 
} } 

这个功能基本上是生成电子邮件的内容,然后返回。

我遇到的问题是,当我通过一些电子邮件地址循环 - 发送相同的电子邮件内容 - 只有第一个返回内容 - 以下是空白 - 任何想法为什么?

好的 - 你不会相信 - 一旦我发布了这个问题 - 在我意识到问题出在哪里之后 - 我使用require_once()函数 - 这可以防止再次包含同一个文件 - 一旦改为include(),一切正常!

+0

同样在这里,pfff。所以thnx不删除的问题:) – Grrrben 2015-02-04 13:00:43

+0

同样...大声笑:)))) – 2017-01-03 06:04:32

为什么循环?

extract($this->_records);

看起来比

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

短,本地除了

了一下,后续代码var_dump是一个很大的帮助的时候(你遇到麻烦,像这样为下一次): )

每次你要在一个循环内多次使用同一个文件,你不应该使用require_once()或include_once,而是使用“包含”,一切都会好的!