35

関数が生成する可能性のある出力を抑制する最も簡単な方法は何ですか? 私がこれを持っているとしましょう:

function testFunc() {
    echo 'Testing';
    return true;
}

そして、testFunc() を呼び出して、ページに "Testing" を表示せずにその戻り値を取得したいと考えています。これが他のものを出力する他のコードのコンテキストにあると仮定すると、これを行うための良い方法はありますか? 多分出力バッファをいじっていますか?

4

4 に答える 4

69

はい、出力バッファをいじることがまさに答えです。出力するメソッドを呼び出す前にオンにするだけです(関数自体ではなく、呼び出す場所で、スクリプト全体またはスクリプトフローをラップできますが、できるだけ「タイト」にすることができますメソッドの呼び出しをラップします):

function foo() {
  echo "Flush!";
  return true;
}

ob_start();
$a = foo();
ob_end_clean();

また、出力は生成されません。

于 2009-01-28T01:54:12.947 に答える
11

どうぞ:

ob_start();
testFunc();
ob_end_clean();

「ob」は「出力バッファリング」の略です。こちらのマニュアルページをご覧ください: http://www.php.net/outcontrol

于 2009-01-28T01:52:43.263 に答える
4

はい、PHP の出力バッファリング関数、つまり ob_start と ob_end_clean (php.net で調べてください) を活用することに関して正しい方向に進んでいます。

<?php
  function testFunc() {
    echo 'Testing';
    return true;
  }

    ob_start();
    $output = testFunc();
    ob_end_clean();

    echo $output;
?>
于 2009-01-28T01:56:31.117 に答える
0

コードにいくつかの条件を適用するのと同じくらい簡単ではありませんか?

つまり、変数 = テストの場合は出力、そうでない場合は出力されませんか?

EVAL のようにブラウザーに直接出力される結果を持つ関数の場合、ob_start で結果を取得できます。

于 2009-01-28T01:54:26.363 に答える