Home  >  Article  >  Backend Development  >  php不停的声明静态变量问题

php不停的声明静态变量问题

WBOY
WBOYOriginal
2016-06-06 20:21:261127browse

<code><?php static $arr=array();
    $arr[]=1;
    static $arr=array();
    $arr[]=2;

    static $arr=array();
    $arr[]='haha';
        var_dump($arr);</code></code>

输出结果是
php不停的声明静态变量问题

如果去掉静态static的话

<code>$arr=array();
$arr[]=1;
$arr=array();
$arr[]=2;

$arr=array();
$arr[]='haha';
    var_dump($arr);</code>

输出结果是:
php不停的声明静态变量问题

~,为什么静态变量重复声明了多次,也相当于只声明了一次呢???~

回复内容:

<code><?php static $arr=array();
    $arr[]=1;
    static $arr=array();
    $arr[]=2;

    static $arr=array();
    $arr[]='haha';
        var_dump($arr);</code></code>

输出结果是
php不停的声明静态变量问题

如果去掉静态static的话

<code>$arr=array();
$arr[]=1;
$arr=array();
$arr[]=2;

$arr=array();
$arr[]='haha';
    var_dump($arr);</code>

输出结果是:
php不停的声明静态变量问题

~,为什么静态变量重复声明了多次,也相当于只声明了一次呢???~

静态变量固定了在内存中的地址,非静态变量的内存地址没有被固定,可以被更改

通常意义上静态变量是静态分配的,他们的生命周期和程序的生命周期一样, 只有在程序退出时才结束期生命周期,这和局部变量相反,有的语言中全局变量也是静态分配的。 例如PHP和Javascript中的全局变量。

可以看一本书 http://www.php-internals.com/book/?p=chapt03/03-04-static-var
会对你有帮助的

声明和赋值是不一样的,比如

<code><?php static $arr=array();
$arr[]=1;
static $arr=array();
$arr[]=2;

static $arr=array();
$arr = array();
$arr[]='haha';
var_dump($arr);</code></code>

运行结果为:

<code>array(1) { [0]=> string(4) "haha" }
</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn