加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中static关键字原理的学习研究分析

发布时间:2020-12-13 05:57:37 所属栏目:PHP教程 来源:网络整理
导读:看PHP手册的时候发现了下面这样一段代码: div class="codetitle" a style="CURSOR: pointer" data="62241" class="copybut" id="copybut62241" onclick="doCopy('code62241')" 代码如下: div class="codebody" id="code62241" ?php function Test() { stati

看PHP手册的时候发现了下面这样一段代码:
<div class="codetitle"><a style="CURSOR: pointer" data="62241" class="copybut" id="copybut62241" onclick="doCopy('code62241')"> 代码如下:<div class="codebody" id="code62241">
<?php
function Test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test();
}
$count--;
}
?>

执行结果如下:
这是一个递归的函数,声明的静态变量count记录次数,输出1~10。
我在看的时候有个疑惑,递归调用的时候 static $count = 0; 语句会重复执行,这为什么不会导致count变量被重复赋值呢?带着这个疑问和同事研究了一下,测试用代码如下:
<div class="codetitle"><a style="CURSOR: pointer" data="53955" class="copybut" id="copybut53955" onclick="doCopy('code53955')"> 代码如下:<div class="codebody" id="code53955">
<?php
echo 'start
';
static $a = 10;
echo "$a
";
unset($GLOBALS['a']);
echo "$a
";
static $a = 20;
echo "$a
";
$GLOBALS['a'] = 10;
echo "$a
";
static $a = 30;
echo "$a
";
unset($GLOBALS['a']);
echo "$a
";
static $a;
echo "$a
";
static $a = 40;
echo "$a
";
$a = 100;
echo "$a
";
static $a = 50;
echo "$a
";
static $a = 4;
echo "$a
";
echo 'end
';
exit;
?>


<DIV style="LINE-HEIGHT: 1.5; FONT-FAMILY: 宋体,Verdana,Arial,Helvetica,sans-serif"><SPAN style="FONT-FAMILY: Verdana" face="Verdana">执行结果如下:
<SPAN style="LINE-HEIGHT: 1.5; FONT-FAMILY: Verdana">start

<DIV style="LINE-HEIGHT: 1.5; FONT-FAMILY: 宋体,sans-serif">

  1. Notice: Undefined variable: a
  2. Notice: Undefined variable: a

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读