如果我想知道函数被调用了多少次怎么办?在没有学习静态变量的时候,我们没有好的办法来解决。

静态变量的特点是:声明一个静态变量,第二次调用函数的时候,静态变量不会再初始化变量,会在原值的基础上读取执行。

有了这个特点,我们就可以实现,最开始我们的提问:
函数调用词数的统计。

先执行10次demo()函数试试,再执行10次test()函数试试:直线电机滑台

<?php
function demo()
{
   $a = 0;
   echo $a;
   $a++;
} function test()
{
   static $a = 0;
   echo $a;
   $a++;
} demo();
demo();
demo();
demo();
demo();
demo();
demo();
demo();
demo();
demo(); /*
for($i = 0 ;$i < 10 ; $i++){
   test();
}
*/
?>

上例中你会发现:
test();执行一次数值就会加1,而demo输出的显示结果,始终为0。

通过上例你就会发现,本文开始处说明的静态变量的特点。

php自定义函数之静态变量的更多相关文章

  1. PHP自定义函数使用外部变量

    一般,php的自定义函数不能直接使用外部变量. 在php自定义函数中使用外部变量前,需要先使用global对外部变量进行声明.  <?php $var = "hello World!& ...

  2. Python函数的静态变量

    C语言中,在函数内部可以定义static类型的变量,这个变量是属于这个函数的全局对象.在Python中也可以实现这样的机制. def f(): if not hasattr(f, 'x'): f.x ...

  3. php 函数中静态变量的问题

    <?php function msg() { static $a = 0; echo $a++, '<br />'; } msg(); msg(); msg(); 上述代码,分别输出 ...

  4. 46 求1+2+3+...+n 静态成员函数和静态变量

    题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 思路: 1)使用构造函数的方法,需要使用sta ...

  5. 在JS中,一个自定义函数如何调用另一个自定义函数中的变量

    function aa1511() { var chengshi="马鞍山"; var shengfen="安徽省"; return shengfen+&quo ...

  6. 学了这么多年C语言,你真的知道全局变量,局部变量,静态变量,本地函数,外部函数是如何区分标识的吗?

    动态库内容分析 文章目录 动态库内容分析 1. 动态库编译 1.1 第一个C文件:basic.c 1.2第二个C文件:demo.c 1.3第三个C文件:main.c 2.动态库编译 3.二进制内容分析 ...

  7. 动态链接库函数内的静态变量,奇妙的UNIQUE Bind

    title: 动态链接库函数内的静态变量,奇妙的UNIQUE Bind date: 2018-09-28 09:28:22 tags: --- 介绍 模板函数和内敛函数中的静态变量,在跨so中的表现, ...

  8. PHP面试 PHP基础知识 五(自定义函数和内部函数)

    自定义函数 变量的作用域和静态变量 变量的作用域:变量的作用域也成为变量的范围,变量的范围即它定义上的上下文背景(也就是它生效的范围). 大部分的PHP变量只有一个单独的范围.这个单独的范围跨度同样包 ...

  9. 深入理解PHP内核(九)变量及数据类型-静态变量

    原文链接:http://www.orlion.ga/251/ 通常静态变量是静态分配的,他们的生命周期和程序的生命周期一样长,只有在程序退出后才结束生命周期,这和局部变量相反,有的语言中全局变量也是静 ...

随机推荐

  1. prometheus grafana graylog 钉钉告警 短信告警 电话告警系统 PrometheusAlert

    PrometheusAlert 简介 PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,日志系统Graylog和数据可视化系统Grafana发出的 ...

  2. 接口与DRF的安装

    接口 # 接口:url链接,通过向链接发送不同的类型请求与参数得到相应的响应数据​# 1.在视图层书写处理请求的 视图函数# 2.在路由层为视图函数配置 url链接 => 产生接口# 3.前台通 ...

  3. Tkinter & mysql 的登录框练习

    import tkinter as tk from tkinter import messagebox import pymysql class SignIn(object): def __init_ ...

  4. jmeter_分布式测试

    背景:         由于Jmeter本身的瓶颈,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误.要解决这个问题,可以使用分布式实测 ...

  5. C# 连接SQLServer数据库自动生成model类代码

    Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Threading ...

  6. git便携版 添加git-bash到右键菜单

    注册表路径 HKEY_CLASSES_ROOT\Directory\Background\shell 新建项取名open in git 默认设置为右键显示的名称 Git Bash Here 新建字符串 ...

  7. 并发编程之Java锁

    一.重入锁 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) .这些已经写好提供的锁为我们开发提 ...

  8. VS2017 配置 boost_1_70

    1. 下载与安装 1.1 安装方法1 (1) 下载 https://www.boost.org/ 或者使用 https://sourceforge.net/projects/boost/files/b ...

  9. python3基础之“函数(2)”

    1.def:定义一个函数 def f(x): return x+1 #返回函数值 a=f(2) print(a) >>3 def even_odd(x): if x%2==0: " ...

  10. js中的call()、apply()、bind()

    js中的一个核心概念就是对this的理解,关于this前面也有说过,不过在有些情况下,还是需要手动去改变this的指向,这里总结一下,js中关于this操作的三种方法 call() apply() b ...