之前已经提出了类似的问题,但在仔细研究了几个工作实例之后,我无法让这个问题对我起作用。
我正在尝试访问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文件都存储在我的网络服务器上的同一文件夹中。我尝试过使用require
和include
语句。我成功地使用require
语句在两个脚本中连接到我的数据库,不确定它为什么不适用于insert-name.php
。
未报告任何错误。
如果语句返回" nameValues变量:'' "表示$nameValues
变量存在但为空。
我还尝试将require "insert-name.php";
替换为require __DIR__."/insert-name.php";
,返回"变量nameValues不存在"来自if语句。
因为两个require
语句都没有成功访问insert-name.php文件,因为它们都没有给出致命错误,但我不知道为什么一个方法认为$nameValues
不存在并且另一个人认为$nameValues
是空的。
答案 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”,则数组为空。