无法从另一个.php文件调用变量

时间:2014-09-16 23:46:37

标签: php variables require

之前已经提出了类似的问题,但在仔细研究了几个工作实例之后,我无法让这个问题对我起作用。

我正在尝试访问insert-name.php

中声明的变量$nameValues

insert-name.php是第一个运行的脚本:

 error_reporting(-1);
$nameValues  = "'".implode("', '", array_values($nameArray))."'";
print_r($nameValues); // returns the expected variable

和insert-answer.php是第二个运行的脚本:

 error_reporting(-1);
require "insert-name.php";
if (isset($nameValues)) {
   print_r("nameValues variable:" . $nameValues);
} else {
   echo "variable nameValues does not exist";
}
//returns nameValues variable:'' indicating that $nameValues exists but is empty

两个.php文件都存储在我的网络服务器上的同一文件夹中。我尝试过使用requireinclude语句。我成功地使用require语句在两个脚本中连接到我的数据库,不确定它为什么不适用于insert-name.php

编辑:

未报告任何错误。 如果语句返回" nameValues变量:'' "表示$nameValues变量存在但为空。

我还尝试将require "insert-name.php";替换为require __DIR__."/insert-name.php";,返回"变量nameValues不存在"来自if语句。

因为两个require语句都没有成功访问insert-name.php文件,因为它们都没有给出致命错误,但我不知道为什么一个方法认为$nameValues不存在并且另一个人认为$nameValues是空的。

2 个答案:

答案 0 :(得分:0)

从另一个文件访问变量没有问题,就像你提供了它们在同一范围内一样(一个不在函数内部等)。在您的情况下,它看起来只是您如何调用print_r()

的情况

当您执行print_r('nameValues variable:" . $nameValues)时,您正在将$nameValues转换为字符串。

尝试使用此类内容转储$nameValues

error_reporting(-1);
require "insert-name.php";
if (isset($nameValues)) {
    echo "nameValues variable: ";
    print_r($nameValues);
} else {
    echo "variable nameValues does not exist";
}

答案 1 :(得分:0)

正如你所说:

  

returns nameValues variable:''

我忽略了一个细节,最后是引号。当你在PHP中回显一个字符串时,它只打印内容(没有打印引号,除非它们在字符串中)。

实际上,这只意味着$nameArray为空,因此请检查生成此内容的脚本。另外,由于implode()的工作原理,array_values()在这里完全是多余的。

测试这个的简单方法是echo count($nameArray);。如果输出为“0”,则数组为空。