我查看了过去的答案,并且相信在头文件中分配的PHP变量是全局的。我必须 那么做错了。这是我的代码的简化版本:
这是我的myGlobals.php文件:
<?php
$NAMELABEL = "Name";
?>
这是文件index.php'需要'myGlobals.php然后调用第3个php文件中的函数
<?php
require_once 'myGlobals.php';
require_once 'DisplayRecords.php';
displayRecords();
?>
这是DisplayRecords.php
<?php
function displayRecords()
{
echo '<table border="1">';
echo '<tr>';
echo '<th>' . $NAMELABEL . '</th>';
echo '</tr>';
echo "</table>";
}
?>
这是高度简化的,只是导致错误的代码。
错误消息。我跑的时候得到的是:
注意:未定义的变量:NAMELABEL 在 C:\ XAMPP \ htdocs中\ fbreverse \ DisplayRecords.php 第29行
现在,在我更改为全局变量$ NAMELABEL之前 - 我使用了它并且它工作正常:
echo '<th>Name</th>';
by'fine'我的意思是表格已经创建,并且它有一个名为名称的标题作为列。
注意:允许在上面的html标记周围使用单引号,如果使用双引号字符串则需要使用单引号
在标签中,正如我在echo '<table border="1">'
中所做的那样 - 所以我只是坚持并坚持使用单引号。
将上面的示例更改为
echo "<th>" . $NAMELABEL . "</th>";
零差异,相同的错误信息,注意:未定义的变量:C:\ xampp \ ht中的NAMELABEL ........ blah blah
为什么{_ 1}}在DisplayRecords.php内的函数$NAMELABEL
中不可见?
答案 0 :(得分:4)
您需要在功能的顶部添加...
global $NAMELABEL;
这将使您的函数内部$NAMELABEL
可用。
全球化应该最小化。你可以重新考虑你的代码吗?
答案 1 :(得分:4)
我查看过去的答案,并且相信在头文件中分配的PHP变量是全局的。
除非你明确告诉函数将其视为全局函数,否则它们不在函数中,它们不是。
function myFunction() {
global $myVariable;
}
有关PHP中变量范围的更多详细信息,请参阅http://php.net/manual/en/language.variables.scope.php。
作为旁注,你使用它的方式似乎更适合constants,它不需要被声明为全局 - 它们总是全局的。
答案 2 :(得分:2)
因为variables scope。如果您需要将某些内容传递给函数 - 请使用function arguments。
其他答案中没有 - global
从不是一个好主意。
答案 3 :(得分:2)
因为在全局范围内声明变量并不意味着它在任何地方都可访问。变量的处理方式与Javascript不同。但是,使用类和OO范例,在类中声明的变量与其他语言(即Java,C#等)的行为相同。这是PHP早期版本的遗迹。
因此,如果$NAMELABEL
是常量(非变化变量),则解决方案可能是使用define()
。
define('NAMELABEL', 'Name');
并在代码中的任何位置使用它:
function displayRecords()
{
echo '<table border="1">';
echo '<tr>';
echo '<th>' . NAMELABEL . '</th>';
echo '</tr>';
echo "</table>";
}
但更好的想法是创建一个类并将值存储在其中。例如:
class Labels {
static public $NAME = "Name";
}
并像这样使用
function displayRecords()
{
echo '<table border="1">';
echo '<tr>';
echo '<th>' . Labels::$NAME . '</th>';
echo '</tr>';
echo "</table>";
}