8

foreach() ループを使用してループし、このループ内で ob_start() および ob_get_clean() を使用するときに問題が発生しました。

これが私の機能です:

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;
} }

この関数は基本的にメールの内容を生成して返します。

私が抱えている問題は、同じメール コンテンツを送信するために多数のメール アドレスをループ処理する場合です。最初のメール アドレスだけがコンテンツを返します。次のメール アドレスは空白です。理由はわかりますか?

4

3 に答える 3

21

わかりました-信じられないでしょう-この質問を投稿したら-問題がどこにあるかを認識した直後-require_once()関数を使用しています-同じファイルが再度含まれないようにします-一度変更して含める() すべて正常に動作します!

于 2010-11-03T13:17:56.437 に答える
0

なぜループするのですか?

extract($this->_records);

よりも少し短く見える

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

さらにネイティブ

そして var_dump は時々大きな助けになります (次にこのようなトラブルに遭遇したときのために) :)

于 2010-11-03T14:33:19.147 に答える