Php变量全局和静态

时间:2016-08-17 09:59:09

标签: php variables

我是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()

3 个答案:

答案 0 :(得分:1)

只需在全局范围内声明它,然后使用$GLOBALS[]数组或global关键字在函数中使用该变量。而且,即使在执行函数后它们仍保持值,您也不需要static关键字。

学习$GLOBALSVariable scope

答案 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();