php static 关键字在 函数中的用法

至于在类中声明为 static 的属性和方法,这里不描述
php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。

function test()
{
    $tVar = 10;
    echo $tVar;
    $tVar++;
}

以上函数每次调用时都会将 $tVar 的值设为 10 并输出 "10"。将变量加一的 $tVar++ 没有其到效果,因为一旦退出本函数则变量 $tVar 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $tVar 定义为静态(static)的:

function test()
{
    static $tVar = 10;
    echo $tVar;
    $tVar++;
}

以上函数每调用Test()都会输出 $tVar 的值并加1。

如果在声明中用表达式的结果对其赋值会导致解析错误。如下:

function test()
{
    static $tVar = 10+1; // 出错
    echo $tVar;
    $tVar++;
}

静态变量也提供了一种处理递归函数的方法。递归函数是一种自己调用自己的方法。写递归函数时要小心,因为可能会无穷递归下去,没有出口.务必确保 有方法来中止递归。以下这个简单的函数递归计数到 10,使用静态变量 $aa 来判断何时停止:如下:
function tt()
{
    static $aa = 0;
    echo ‘this is tt ‘ . $aa . "<br />";
    $aa++;
    if($aa < 10)
    {
        tt();
    }
    $aa--; // 结束时让其值跟初始化一样,防止再次调用时还保留之前调用过的结果
}

php static 关键字在 函数中的用法

时间: 2024-08-04 18:19:44

php static 关键字在 函数中的用法的相关文章

scanf()函数中*的用法

*在scanf函数中提供完全不同的服务,当把它放在%和说明符字母之间时,它使函数跳过相应的输入项目. 实例程序: /*scanf()函数中*的用法:如果程序要读取一个文件中某个特定的列(该文件中的数据以统一的列排列时,那么该功能将非常有用)*/ #include <stdio.h> int main() { int n; printf("please input four numbers:\n"); scanf("%*d %*d %*d %d",&

面向对象的static关键字(类中的static关键字)

转自:http://blog.csdn.net/xiayefanxing/article/details/7382192 1.静态数据成员 在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员. 先举一个静态数据成员的例子. 1 //Example 5 2 #include "stdafx.h" 3 #include <iostream> 4 using namespace std; 5 class Myclass 6 { 7 public: 8

this关键字在函数中的应用

this 关键字用来将方法和属性绑定到一个对象的实例上 <script type="text/javascript"> /* 检查银行账户对象的构造函数*/ function Checking(amount) { this.balance = amount; // 属性 this.deposit = deposit; // 方法 this.withdraw = withdraw; // 方法 this.toString = toString; // 方法 } functio

[java]static关键字的四种用法

在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下static关键字及其用法. static关键字 1.修饰成员变量 在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员,这句话挺起来都点奇怪,其实这是相对于对象的属性和方法来说的.请看下面的例子:(未避

C++中的static关键字的总结

C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变量的例子,如下: //Example 1#include <iostream.h>void fn();static int n; //定义静态全局变量void main(){ 

(转)C++中的static关键字的总结

文章转自 http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/08/2542315.html C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变量的例子,如下: //Exam

C++中的static关键字

C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用.一.面向过程设计中的static1.静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变量的例子,如下: [cpp] view plain copy #include<iostream> using namespace std; static int n;  //定义

C++中的static关键字的总结 (转载)

C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变量的例子,如下: //Example 1#include <iostream.h>void fn();static int n; //定义静态全局变量void main(){ 

浅析C++中static关键字

C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 一.面向过程设计中的static 1.静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变量的例子,如下: //Example 1#i nclude <iostream.h>void fn();static int n; //定义静态全局变量void main()