今天去图书馆借了一本《PHP网络编程 技术与实践》程伟 孙红丽著,原打算找兄弟连的《细说PHP》,可惜被人借走了,后来找来找去找了这本书,看看内容相对还算全面些。可惜在看到59页关于静态变量的时候就犯糊涂了,虽然PHP之前接触得很少,但C#,JAVA全练过,难不成到了PHP中就变了,然不成PHP的创始人另类,将书中原程序拷贝到环境中运行了一下,原来不是PHP创始人另类,而是书中作者另类,程序写错了,而且校对也没看出来,想想,现在的书啊,唉,误人子弟。下面把原创录下:
<?php
function myfunc()
{
static $int;
$int=0;
echo $int+1."<br/>";
}
echo myfunc();
echo myfunc();
echo myfunc();
?>
书中结果三个值分别为1,2,3
然而真实结果是无法运行,语法错误,后检查错误的原因在于$int+1."<br/>"这句的写法,应该写成($int+1)."<br/>",改过来后程序不报错了,但值却是1,1,1;其实这个也不难解释,$int虽然在不停的加1,但所得结果并没有再次赋给$int,谈什么$int会递增,后来经测试将程序改成如下,终于可以得出运行结果:
<?php
function myfunc()
{
static $int=0;
$int=$int+1;
echo $int."<br/>";
}
echo myfunc();
echo myfunc();
echo myfunc();
?>
注意,static关键字必须和赋值在一起,如果按书中写在
staitc $int;
$int=0;
这样的结果也是错误的,运行后的结果同样也是1,1,1
从这可以看出,在这个例子上,书中就错了三处,真是搞不懂,校对干嘛的,浮躁啊。好久没一点点的去看一些书中代码了,想不到静下心来看点东西就看到这样的东西。继续,近期要玩一个PHP项目,得好好学习一下