首頁  >  文章  >  後端開發  >  php中$GLOBAL['']和關鍵字global為什麼會受到靜態變數的影響?

php中$GLOBAL['']和關鍵字global為什麼會受到靜態變數的影響?

WBOY
WBOY原創
2016-12-01 00:01:22899瀏覽

回覆內容:

第一次遇到這種問題。有點好奇,題主是怎麼發現這個問題的?

我說下我的理解。

首先我們要先明確一下「賦值」這個概念。

當 $a = 1; 的時候,並不是說加一個名字是 $a 值是 1 的資料。
當 $b = &$a; 的時候,也不是說把 $b 指向 $a 或相反 。

這個過程形象點說是這樣:
<code class="language-php"><span class="x">$a = 1;</span>
</code>
多讀讀php手冊,非常多例子
PHP: 變數範圍
PHP: 引用的解釋
PHP: 引用傳遞
PHP: 引用變數 變數的範圍即它定義的上下文背景(也就是它的生效範圍)。大部分的 PHP 變數只有一個單獨的範圍。這個單獨的範圍跨度同樣包含了 include 和 require 引入的檔案。例如:


<code class="language-php"><span class="cp"><?php</span>
<span class="nv">$a</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">include</span> <span class="s1">'b.inc'</span><span class="p">;</span><span class="cp">?></span><span class="x"></span>
</code>

<code class="language-text">global $a;
时会 新建 一个指向与外部$a同地址的指针

$GLOBALS['a'] = &$static_a;
时会 把外部$a 指针 指向 $static_a的内容,抛弃原先的指向
</code>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn