今天,我开始学习PHP。并且,我创建了我的第一个PHP文件来测试不同的变量。你可以看到我的文件如下。
<?php
$x = 5; // Global scope
function myTest()
{
$y = 10; // Local scope
echo "<p>Test variables inside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
}
myTest();
echo "<p>Test variables outside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
?>
我在浏览器中运行此文件时发现以下错误。
注意:未定义变量:x在/opt/lampp/htdocs/anand/php/index.php中的第19行
注意:未定义变量:在/opt/lampp/htdocs/anand/php/index.php的第29行中输入y
我该如何解决与此相关的问题?
9条答案
按热度按时间byqmnocz1#
第一个错误(
$x
是未定义的)是因为默认情况下全局变量不导入到函数中(与“超级全局变量”相反,后者是)。你需要告诉你的函数你正在引用全局变量
$x
:否则,PHP无法判断您是否正在使用同名的局部变量隐藏全局变量。
第二个错误(
$y
是未定义的)是因为local作用域就是local。它的全部意义在于$y
不会“泄漏”到函数之外。当然,你不能在代码后面访问$y
,在定义它的函数之外。如果你可以,它将与全局作用域没有什么不同。6rvt4ljy2#
出现第一个错误是因为变量$a无法访问全局变量的值,除非在函数内部显式声明
global $a
。Example #1使用全局
最后一个错误是因为**$y**是在函数
mytest()
中定义的,所以它的作用域将仅限于该函数。有关详细说明,请阅读 * Variable scope *。
vptzau2j3#
将$x设置为全局变量,例如
或者试试这个:
zte4gxcn4#
使用变量全局有两种情况:
1.使用该变量的单个副本,并从任何地方修改它,即从函数内部或外部(即全局作用域)修改。在这种情况下,您需要在允许的函数集中以**
global $x;
格式进行声明。1.如果您需要单个函数的局部变量与全局变量(即所有函数之外的变量)的标识符相同;在这种情况下,你有两个同名的变量,一个是本地变量,另一个是全局变量,那么你需要使用一个superglobalvariable
$GLOBALS
**,也就是所有全局变量的数组,我个人更喜欢这种方法来提高代码的效率;下面是这两个的代码。
代码1(使用全局声明)
代码2(使用$GLOBALS[]数组)
用于**REFERENCE**。
1rhkuytd5#
代码的行为符合预期,但如果您希望在脚本中使用这两个变量,请使用以下代码:
to94eoyn6#
在PHP中,如果要在函数中使用全局变量,则必须在该函数中将其声明为全局变量。
通过在函数中声明$x global,它将引用变量的全局版本。
ql3eal8s7#
在PHP中,你必须了解变量的作用域。参见 * Variable scope *。
在您的代码中,$x是全局变量,因此为了访问函数中的该变量,请在函数的开头使用
global $x;
,即对于$y,您可以通过检查isset($y)跳过输出,或者在全局范围内分配一个默认值。
u0njafvf8#
将$x放在代码中的””外部,如echo”变量$x是:“.$x;
h9vpoimq9#
因此,要想在您的资源上发布问题,这并不总是可能的,因为不清楚为什么您总是会提出您找不到的错误,或者您是否习惯了每个人都对您的论调泼冷水?