又要麻烦大家了,还是关于变量问题的!!!
cers 发表于: 2008-8-08 14:47 来源: PHPChina 开源社区门户
手册上说这里会输出1 2 3,测试结果也是输出1 2 3,我不太明白,在函数里已经用unset销掉了变量a
为什么第二次调用函数里,新建的变量a还是指向原来 的地址?
这里加上原帖地址:http://bbs.phpchina.com/thread-73956-1-1.html
cers 发表于: 2008-8-08 14:47 来源: PHPChina 开源社区门户
最新回复
function foo()
{
static $a;
$a++;
echo "$a\n";
unset($a); //你即释放了$a,但不影响静态.
echo "$a\n";
}
foo(); //执行一个,, $a=1 注意,不是返回!!!
foo();
foo();
?>
————转自PHP手册(unset函数,里面有关于全局变量等unset的说明)
QUOTE:
可以解释清楚一些吗?为什么?why?[ 本帖最后由 shidadmt 于 2008-8-8 15:55 编辑 ]
它是唯一的!只有一个值!
unset删除了引用!代码区a的值还存在!
CODE:
<?php二:function foo()
{
global $a;
$a++;
}
foo();
echo $a;
?>
CODE:
三:<?PHP
function foo()
{
global $a;
$a++;
echo "$a<br />";
unset($a);
echo "$a<br />";
global $a;
echo "$a<br />";
}
foo();
foo();
foo();
?>
CODE:
结合php函数变量作用域,global和static的区别,应该能明白为什么。<?PHP
function foo()
{
echo "$a";
echo '<br />';
static $a;
$a++;
echo "$a";
echo '<br />';
unset($a);
static $a;
echo "$a";
echo '<br />';
}
foo();
foo();
foo();
?>