0

我不认为我理解 PHP 输出缓冲的工作原理足以知道这是否可能:我想按以下顺序执行以下操作:

  1. 声明一个 PHP 变量 $foo
  2. 开始和结束输出缓冲区以声明变量 $bar
  3. 使用变量 $foo

当我第二次尝试使用 $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 最后未定义。我认为我对基本概念的理解不够透彻,无法确切知道此处代码中发生了什么。我希望能够使用缓冲区(或其他方法?)使 some_file.php 中的所有 echo 语句转到单个字符串,同时保留以前 PHP 代码中的变量。有没有办法做到这一点?

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 回答