如果我想知道函数被调用了多少次怎么办?在没有学习静态变量的时候,我们没有好的办法来解决。
静态变量的特点是:声明一个静态变量,第二次调用函数的时候,静态变量不会再初始化变量,会在原值的基础上读取执行。
有了这个特点,我们就可以实现,最开始我们的提问:
函数调用词数的统计。
先执行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。
通过上例你就会发现,本文开始处说明的静态变量的特点。
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
你这个解释也是挺合理的
水之蓝色8年前
for($i = 0 ;$i < 10 ; $i++){ test(); 这块调用十次test()函数,个人感觉应该输出0啊,因为你每次调用都是对a重新赋值0,虽然它是静态函数啊。没看明白
其实不难理解。相当于调用demo的时候一开始a=0;然后输出一下0,然后a++ =1;之后再次调用demo的时候a又被重新赋值成了0.所以再次输出还是0.而test调用的时候由于是静态变量,所以一开始a=0,所以第一下输出是0.然后a++ = 1;然后执行第二次。进来的时候a不会被重新赋值,上一次a执行完是1;所以输出1;依次类推。
第二次调用test的时候a是不会被赋值的,只会得出a++之后的值。所以调用一次a++执行一次+1。
Id8年前
<?php $a=0; function demo(){ echo $GLOBALS['a']; $GLOBALS['a']++; }; demo(); demo(); demo(); demo(); ?>
静态变量的特点是:声明一个静态变量,第二次调用函数的时候,静态变量不会再初始化变量,会在原值的基础上读取执行。
前++和后++的理解: 如果有运算:前++是先赋值后运算,而后++是先运算后赋值。但对于变量而言,不管是前++和后++都是自己自增1。前--和后- -原理与其相同。
0