我是PHP的新手。 我正在研究变量范围。
在函数外声明的变量具有GLOBAL SCOPE并且只能 在函数外部访问。
在函数中声明的变量具有LOCAL SCOPE并且只能 可以在该功能中访问。
global关键字用于从a中访问全局变量 功能
为此,请在变量之前使用global关键字(在 功能)
通常,当一个函数完成/执行时,它的所有变量 被删除。但是,有时我们希望删除局部变量。我们需要它来做进一步的工作。
我需要在函数内声明变量是全局的,所以我可以从函数外部访问它并同时保持静态,这样我可以在执行函数后保留变量的值并再次使用它。 我试过了
global static $x;
但它不起作用。
我需要知道我是否以错误的方式思考我是PHP的新手。
<?php
$x = 5;
function myTest() {
echo "x is equal to".$GLOBALS['x']."";
$GLOBALS['x']++;
}
myTest();
myText();
?>
它只执行第一个myTest()。 第二个显示错误 致命错误:未捕获错误:调用未定义函数myText()
答案 0 :(得分:1)
只需在全局范围内声明它,然后使用$GLOBALS[]
数组或global
关键字在函数中使用该变量。而且,即使在执行函数后它们仍保持值,您也不需要static
关键字。
答案 1 :(得分:0)
您可以使用static或global来保留值:
function doStuff() {
$x = null;
if ($x === null) {
$x = 'changed';
echo "changed.";
}
}
doStuff();
doStuff();
结果将是:changed.changed.
如果您使用:
function doStuff() {
static $x = null;
if ($x === null) {
$x = 'changed';
echo "changed.";
}
}
doStuff();
doStuff();
结果将是changed.
,因为即使您多次调用函数,静态也会保留最后一个值
由于它的定义,全局也有相同的结果,所以你也可以使用:
global $x;
函数中的和结果相同:changed.
答案 2 :(得分:0)
您的代码中有错字问题(第二次调用函数):
function myTest() ....
然后您将其命名为:
myTeXt();