【问题标题】:PHP: How do I prevent include/require to add numbers in a loop?PHP:如何防止包含/要求在循环中添加数字?
【发布时间】:2011-11-26 12:10:44
【问题描述】:

每次我尝试将包含/要求分配给变量时,它都会在末尾添加一个数字。 我想没有那个愚蠢的数字。

我尝试了 file_get_contents,但它的工作方式不同。 如果无法通过 require 来实现,是否有一种 EASY 和 SHORT(单函数和单行代码)的方式来使用另一个函数来实现?

请帮帮我,因为它快把我逼疯了。

例如:

文件 1 (div.php):

<div><?php echo $x; ?></div>

文件 2:

<?php
$x = "Example 1";
$file = include('div.php');
echo $file;

$x = "Example 2";
$file = include('div.php');
echo $file;
?>

输出:

示例 1 1 示例 2 1

【问题讨论】:

  • 注意:如果你想要做的只是echodiv.php 的输出,你可以从末尾删除echo $file;(并跳过上一行的$file = 部分) .如果您想先捕获输出并用它做其他事情,那么您确实需要另一个答案。

标签: php variables include


【解决方案1】:

如果您使用 FILE1 作为模板,只需包含它。您也可以使用输出缓冲作为@grossvogel 的回答。

<?php
$x = "Example 1";
include('div.php');

$x = "Example 2";
include('div.php');
?>

【讨论】:

    【解决方案2】:

    这是因为includerequire的默认返回值是true,或者1

    当您包含文件时,它会自动在包含的文件中输出您的内容。当您echo $file 时,您正在回显包含的返回值,即true

    请注意,如果您将return false;return "&lt;div&gt;$x&lt;/div&gt;"; 放入包含的文件中,那么它将成为$file 的值。无论您从包含的文件中返回什么,都会传递给变量。

    例如:

    文件 1 (monkey_do.php):

    <?php 
    return "I am a monkey";
    

    文件 2 (main.php):

    <?php 
    $monkey_see = include 'monkey_do.php';
    echo $monkey_see; // prints "I am a monkey"
    

    【讨论】:

    • 我对 php 比较陌生。你能给我一个猴子能理解的例子吗?
    • 我替换了 ECHO:
      表示返回:
      并且有效。谢谢!!!
    • 这仍然不是您想要的。尝试用这个替换整个文件:&lt;?php return "&lt;div&gt;$x&lt;/div&gt;"; ?&gt;。这将确保您也获得&lt;div&gt; 标签。或者,只需使用 include "div.php"; 代替两行 $file = ...; echo $file; 并保留您的 div.php 文件原样。
    【解决方案3】:

    你可以使用output buffering:

    $x = 'Example 1';
    ob_start();
    include ('div.php');
    $file = ob_get_contents();
    ob_end_clean();
    echo $file;
    

    编辑:我刚刚在手册中看到了这个例子,它定义了一个函数来做到这一点:http://php.net/manual/en/function.include.php#example-131

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多