php中static静态变量的使用方法详解

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

看看下面的实例:

复制代码
代码如下:

<?php
function Test()
{

$w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>

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

如下:

复制代码
代码如下:

<?php
function Test()
{

static $w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>

本函数每调用Test()都会输出 $w3sky 的值并加一。

静态变量也提供了一种处理递归函数的方法。递归函数是一种自己调用自己的方法。写递归函数时要小心,因为可能会无穷递归下去,没有出口.务必确保
有方法来中止递归。以下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止:
静态变量与递归函数的例子:

复制代码
代码如下:

<?PHP
function Test()
{

static $count = 0;
$count++;
echo $count;
if ($count < 10) {

Test();
}
$count--;
}
?>

注:
静态变量可以按照上面的例子声明。如果在声明中用表达式的结果对其赋值会导致解析错误。
声明静态变量例子:

复制代码
代码如下:

<?PHP
function foo(){
static
$int = 0;// correct
static $int = 1+2; // wrong (as it is an expression)

static $int = sqrt(121); // wrong (as it is an expression too)
$int++;

echo $int;
}
?>

时间: 2024-10-02 16:00:07

php中static静态变量的使用方法详解的相关文章

PDO中获取结果集之fetchAll()方法详解

fetchAll()方法是获取结果集中的所有行,返回一个包含结果集中所有行的二进制数组!大理石机械构件维修厂家 那么在上一篇<PDO中获取结果集之fetch()方法详解>中,我们介绍了fetch()方法获取结果集,我们今天将要介绍的fetchAll()方法与上一个方法fetch()类似,但是该方法只需要调用一次就可以获取结果集中的所有行,并赋给返回的数组(二维). fetchAll()方法的语法格式如下: 1 array PDOStatement::fetchAll ([ int $fetch

HTML中javascript的&lt;script&gt;标签使用方法详解

原文地址:HTML中javascript的<script>标签使用方法详解 只要一提到把JavaScript放到网页中,就不得不涉及Web的核心语言--HTML.在当初开发javascript的时候,Netscape要解决的一个重要问题就是如何做到让JavaScript既能与HTML页面共存,又不影响那些页面在其他浏览器中的呈现效果.经过尝试.纠错和争论,最终的决定就是为Web增加统一的脚本支持.而Web诞生早期的很多做法也都保留了下来,并被正式纳入HTML规范当中. <script&g

PHPCMS V9模板中的常用变量、碎片代码详解

前面是变量,后面是调用变量的解释 {pc:content action="position"posid="12" thumb="1" order="id desc"num="10"} 图片新闻 {pc:contentaction="lists" catid="$r[catid]" num="1"thumb="1" order=&

PDO中获取结果集之fetchColumn()方法详解

fetchCloumn()方法是获取结果集中下一行指定列的值,从结果集中的下一行返回单独的一列.直线电机品牌 那么我们在前面两篇文章<PDO中获取结果集之fetchAll()方法详解>和<PDO中获取结果集之fetch()方法详解>中我们介绍了两种类似的PDO中获取结果集的方法,那么我们接下来跟大家介绍fetchColumn()方法! 下面我们先看下fetchColumn()方法的语法格式如下: 1 string PDOStatement::fetchColumn ([ int $

C#中static静态变量的用法

使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型 静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: A.该变量在全局数据区分配内存. B.初始化:如果不显式初始化,那么将被隐式初始化为0. 静态局部变量 定义:在局部变量前加上static关键字时,就定义了静态局部变量. 特点: A.该变量在全局数据区分配内存

(转)面试题--JAVA中静态块、静态变量加载顺序详解

1 public class Test { //1.第一步,准备加载类 2 3 public static void main(String[] args) { 4 new Test(); //4.第四步,new一个类,但在new之前要处理匿名代码块 5 } 6 7 static int num = 4; //2.第二步,静态变量和静态代码块的加载顺序由编写先后决定 8 9 { 10 num += 3; 11 System.out.println("b"); //5.第五步,按照顺序加

[51单片机] Keil C51中变量的使用方法详解

引言    8051内核单片机是一种通用单片机,在国内占有较大的市场份额.在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功.由于51内核单片机的存储结构的特殊性,Keil C51中变量的使用与标准C有所不同.正确地使用变量,有利于获得高效的目标代码.下面详细介绍Keil C51中变量的使用方法. 1 CPU存储结构与变量的关系    变量都需要有存储空间,存储空间的不同使得变量使用时的工作效率也不同.    标准C的典型运行环境是8086(含IA-32系列)内核,其存储结构是CP

PDO中获取结果集之fetch()方法详解

fetch()方法获取结果集中的下一行数据,该函数的具体语法格式如下:大理石平台检定规程 1 mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] ) 参数 fetch_style:控制结果集的返回方式,其中可选择的值如下表: 值 说 明 PDO::FETCH_ASSOC 关联数组形式. PDO::FE

javascript中的字符串编码、字符串方法详解

js中的字符串是一种类数组,采用UTF-16编码的Unicode字符集,意味字符串的每个字符可用下标方式获取,而每个字符串在内存中都是一个16位值组成的序列.js对字符串的各项操作均是在对16位值进行操作,而非字符. 在js中"\"后面的第一个字符不会被解析为字符,这就是js的转义字符: \o NUL字符 \b 退格符 \t 水平制表符 \n 换行符 \v 垂直制表符 \f 换页符 \r 回车符 \" 双引号 \' 撇号或单引号 \\ 反斜线 \xXX 由两位十六进制数xx指