为什么这样的输出结果都是ccc?
立即学习“PHP免费学习笔记(深入)”;
但是这样却改变不了数组?
而这样会给数组新增元素?
static $arr = array(); $arr[] = 'sdsds'; $arr[] = 'xxx'; var_dump($arr); static $arr = array('ww', 'vv'); var_dump($arr);希望能讲下原理 :)
Yes!SUN企业网站系统 3.5 Build 20100303下载Yes!Sun基于PHP+MYSQL技术,体积小巧、应用灵活、功能强大,是一款为企业网站量身打造的WEB系统。其创新的设计理念,为企业网的开发设计及使用带来了全新的体验:支持前沿技术:动态缓存、伪静态、静态生成、友好URL、SEO设置等提升网站性能、用户体验、搜索引擎友好度的技术均为Yes!Sun所支持。易于二次开发:采用独创的平台化理念,按需定制项目中的各种元素,如:产品属性、产品相册、新闻列表
回复内容:
为什么这样的输出结果都是ccc?
立即学习“PHP免费学习笔记(深入)”;
但是这样却改变不了数组?
而这样会给数组新增元素?
static $arr = array(); $arr[] = 'sdsds'; $arr[] = 'xxx'; var_dump($arr); static $arr = array('ww', 'vv'); var_dump($arr);希望能讲下原理 :)
static一般是用在function或者class里的, 这种用法比较少见
我认为,php引擎在扫到static的时候,会把静态声明的提到域的顶端也就变成了
下一个演变成了
第三个演变成了
静态变量在执行前就已经初始化完了。不管初始化多少次,只有最后一次有用。不带上static就可以赋值。
你的所有static $xxx = xxx;都只有最后一句有用。
下面的代码应该能帮你理清思路:
结果是:
array (size=2) 0 => string 'gga' (length=3) 1 => string 'gaga' (length=4)
第二个的第二次定义数组时是空的,应该是忽略。
你再把第一个的第二次定义改为'',看看结果。
学习了。。。











