在使用任何可能会被多次调用的函数时,我们都应考虑使用静态变量。静态变量让函数在多次被调用时记住变量的值,而这些变量并不是全局变量。

上一篇笔记说到了多维数组的排序需首先自定义排序函数。现在提出一个新的需求:统计递归的次数。那么我们就要使用静态变量了。

示例:使用静态变量

<?php //创建数组$students = array(256 => array('name' => 'John', 'grade' => 98),23 => array('name' => 'Tom', 'grade' => 85),9 => array('name' => 'Steve', 'grade' => 94),363 => array('name' => 'Robert', 'grade' => 83),69 => array('name' => 'Jack', 'grade' => 78));//按名字排序/*$count是一个静态变量它的初始值为1,它的赋值操作只在函数第一次被调用执行(因为它是一个静态变量),然后下一条语句打印递归次数,
         *最后$count的值加1*/function name_sort($x, $y) {static $count = 1;echo "<p>Iteration $count: {$x['name']} vs {$y['name']}</p>\n";$count++;return strcasecmp($x['name'], $y['name']);}//按成绩排序function grade_sort($x, $y) {static $count = 1;echo "<p>Iteration $count: {$x['grade']} vs {$y['grade']}</p>\n";$count++;return ($x['grade'] < $y['grade']);}uasort($students, 'name_sort');echo "<pre>".print_r($students,1)."<pre>";uasort($students, 'grade_sort');echo "<pre>".print_r($students,1)."<pre>";
?>

我们来看一下运行结果:

总结一下:在可能会被多次调用的函数中,我们应考虑使用静态变量,静态变量让函数在多次被调用时记住变量的值,而这些变量不是全局变量。

PHP:使用静态变量相关推荐

  1. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  2. php父类的静态变量,抽象父类中的PHP静态变量:问题是在示例代码中!

    问题的快速代码包括: abstract class ClassParent { public static $var1 = "ClassParent"; } class Class ...

  3. Android静态变量的生命周期

    Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类 被卸载的时候,静态变量被销毁.在PC机的客户端程序中, ...

  4. c语言c++语言中静态变量,函数详解

    静态变量,静态函数对于一些c,c++的初学者来说,造成了不少的困扰.昨晚和寝室的室友讨论到这 个问题,想了一下,作了一下总结: 虽然说c和c++在很多人的眼里就是孪生姐妹,其实还是有很大区别的.在这里 ...

  5. PHP的静态变量介绍

    静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中.一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会.就是说,下次再调用这个函数的时候,该变量的值会保留下来. 只要在变量 ...

  6. java中的关键字static(静态变量)和final定义常量

    package point;class Point {int x = 0;int y = 0;static int z = 100; // 定义静态变量z,类变量static final double ...

  7. 堆栈,静态变量和普通变量,静态函数和普通函数的区别

    首先简单介绍一下堆和栈的区别. 1.内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1).栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似 ...

  8. 3、如何证明static静态变量和类无关?

    如何证明static静态变量和类无关? 可以从以下三个方面证明static静态变量和类无关: 1.不需要初始化类就可以直接使用静态变量: 2.在类中写个main方法运行,即便不写初始化类的代码,静态变 ...

  9. php unset 静态变量,php如何删除静态变量

    php删除静态变量的方法:可以通过重新定义的方式进行删除,如[$temp = null].不可以使用unset()函数删除静态变量,因为该函数只是销毁了局部变量. PHP设置了静态变量,如果需要销毁这 ...

  10. 关于函数调用、静态变量、预编译的习题

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p238-240 习题7 1.程序阅读,写出程序的运行结果 /* (1) */ #include< ...

最新文章

  1. 职称计算机和职称英语期限,专业技术职称考试,职称英语和职称计算机有效期多长时间,每年什么时候报名啊?上海的...
  2. 设置cisco登录时显示的警示性信息-banner
  3. 2021个人北美秋招总结
  4. python判断数组中是否存在重复元素_利用python查看数组中的所有元素是否相同
  5. 6、easyUI-拖放事件及应用
  6. JavaScript 中的 this 与闭包详解
  7. 编写一个Applet在屏幕上画椭圆,椭圆的大小和位置由鼠标决定
  8. matlab altera视频,Altera 官网中文视频教程 下载地址
  9. c++万能头文件包含的头文件
  10. PowerDesigner设计业务流程图
  11. linux pv命令,Linux系统下pv命令的一些使用技巧小结
  12. 3d建模做一单多少钱?做外包赚钱吗?
  13. 老大,不好了,内存泄漏了!
  14. 画saliency intensity map图,pytorch版本
  15. CSS3 vw/vh 实现内容窗口自适应
  16. 统计_偏态、峰值(Datawhale概率统计温习2)
  17. 微星h510m和铭瑄h610m哪个好? h510和h610区别
  18. 简介RASA中的TED Policy
  19. bzoj4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III(bfs)
  20. 《炬丰科技-半导体工艺》光刻胶回流特性在金刚石微透镜制造中的应用

热门文章

  1. OpenCV-飞龙绣球识别
  2. 基于51单片机将红外避障模块(E18-D80NK)与led联动
  3. java将汉字转化为拼音
  4. P1457 城堡 The Castle(DFS+染色)
  5. 小猫爪:i.MX RT1050学习笔记20-安全启动4-实现HAB签名和HAB加密
  6. 软件定义的网络--改头换面的改造?
  7. Mysql数据库报错:Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY
  8. 此证书的签发者无效解决办法
  9. swift 设置 pickerView 为黑底白字
  10. Solar Tracker