0

これが可能かどうかを判断するには、PHP 出力バッファリングがどのように機能するかを十分に理解していないと思います。次のことをこの順序で実行したいと考えています。

  1. PHP 変数 $foo を宣言する
  2. 変数 $bar を宣言する出力バッファーの開始と終了
  3. 変数 $foo を使用する

2 回目に $foo を使用しようとすると、うっかりクリアしてしまったようです。

コード例:

<?php
$foo = 'some value';
ob_start();
include('some_file.php');
//I want to use output buffering since some_file.php has a number of echo statements that I want to concatenate into one variable.  Maybe there's a better way?
$bar = ob_get_clean();
ob_end_flush();
echo $bar;
echo $foo;
?>

上記の例では、$bar は問題なく動作しますが、最後に $foo は未定義です。ここのコードで何が起こっているのかを正確に理解できるほど、根底にある概念を十分に理解していないと思います。前の PHP コードの変数を保持しながら、some_file.php のすべての echo ステートメントを単一の文字列にするために、バッファー (または他の方法?) を使用できるようにしたいと考えています。これを行う方法はありますか?

4

1 に答える 1

0

上記の例では、$bar は問題なく動作しますが、最後に $foo は未定義です

あなたはおそらくunsetそれを中に入れていsome_file.phpます。それ以外の場合、スクリプトは正常に機能します。insidereturnを介して他のファイルから出力することもできます:returnsome_file.php

// some_file.php
...
return $output;

// main file
...
$bar = include('some_file.php');
于 2013-05-01T15:38:55.003 に答える