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(),一切正常!
答
为什么循环?
extract($this->_records);
看起来比
foreach($this->_records as $key => $value) {
${$key} = $value;
}
短,本地除了
了一下,后续代码var_dump是一个很大的帮助的时候(你遇到麻烦,像这样为下一次): )
答
每次你要在一个循环内多次使用同一个文件,你不应该使用require_once()或include_once,而是使用“包含”,一切都会好的!
同样在这里,pfff。所以thnx不删除的问题:) – Grrrben 2015-02-04 13:00:43
同样...大声笑:)))) – 2017-01-03 06:04:32