【问题标题】:PHP can't pass variable to included filePHP无法将变量传递给包含的文件
【发布时间】:2011-05-20 09:01:13
【问题描述】:

我试图为此找到解决方案:

file1.php

$name = "Jacob";
include ("file2.php");

file2.php

Hi there! <?php echo $name ?>

输出

Hi There! Notice: Undefined variable: name in /volume1/web/test/file2.php on line 9 

需要帮助请://

【问题讨论】:

  • 刚刚尝试过,它的工作方式应有尽有。您可以尝试将 $name 设为全局变量,但这会带来其他问题。
  • 这很好用;事实上,这就是有多少 PHP 模板系统可以工作。

标签: php variables include


【解决方案1】:

如果你想打印/使用$namevariable 那么,你必须先在file2中声明该变量,就像$name=""一样,然后你可以轻松使用它,无需声明,你会得到@987654324的错误@。

【讨论】:

    【解决方案2】:

    我改用环境变量。它解决了这个问题。

    $_ENV["name"] = "Jacob";

    file2.php内部

    echo $_ENV["name"];

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题并这样解决:

      $name = "Jacob";
      include ("file2.php");
      

      file2.php

      $name = $name; //add this line
      Hi there! <?php echo $name ?>
      

      我无法解释为什么它应该这样工作。 刚刚成功。

      【讨论】:

        【解决方案4】:

        尝试使用此代码

        global $name;    
        $name = "Jacob";    
        include ("file2.php");
        

        ** 和 file2.php 里面

        global $name;
        echo "Hi there! ".$name;
        

        我认为这会奏效

        【讨论】:

        • global 不是这样工作的,除非 file2 中的 echo 在函数中,否则 $name 已经在范围内。
        • 抱歉,在 php v5.3 中,问题有所不同。将变量传递给包含的文件时出现问题。在那个版本中尝试一下。你会明白我的意思
        【解决方案5】:

        我有时会感到困惑(confuzzled 的缩写)并且忘记使用基本文件在线检查项目。

        例如,如果使用包含 inc.php 的名为 index.php 的基本文件,请确保启动 index.php 而不是包含文件。

        inc.php 文件将在浏览器中显示错误,因为它没有链接到 index.php 变量,而 index.php 文件包含变量和包含。

        【讨论】:

          【解决方案6】:

          您的代码运行良好。

          如果您收到该错误,您的 file1.php 肯定没有在全局范围内定义 $name。

          仅供参考,引自文档:

          当一个文件被包含时,它的代码 contains 继承变量范围 包含的行的 发生。任何可用的变量 调用文件中的那一行将是 在被调用文件中可用,来自 那一点向前。然而,所有 中定义的函数和类 包含的文件具有全局范围。

          我使用 php-5.3.3-pl1-gentoo(cli) 的测试用例,以防它在您使用的任何版本中都是 PHP 错误 - 但我对此表示怀疑:

          [thiefmaster@hades:~]> cat inc1.php
          <?php
          $name = 'bleh';
          include('inc2.php');
          ?>
          [thiefmaster@hades:~]> cat inc2.php
          Hi there! <?php echo $name; ?>
          [thiefmaster@hades:~]> php inc1.php
          Hi there! bleh
          

          【讨论】:

            【解决方案7】:

            确保您的网址以file1.php 结尾,而不是file2.php 或其他包含file2.php 的文件。此外,请尝试将这两个文件缩减为您在此处发布的内容(加上 &lt;?phpfile1.php 的开头)以排除周围的代码。

            【讨论】:

              猜你喜欢
              • 2010-12-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-06-08
              • 2015-01-20
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多