看板 PHP 關於我們 聯絡資訊
$GLOBALS array、declared global 這 2 種方式 100% 可以運作的很好在設值方面, 但是若在參考指派方面將有差異,下面例子將使得區域變數被全域變數所參考(這並不뜊|造成存取破壞)。 $GLOBALS array: $a="global"; function foo() { $bar="local"; $GLOBALS['a']= &$bar; } foo(); echo $a; //local declared global: $a="global"; function foo() { $bar="local"; global $a; // $a=&$GLOBALS['a'] $a=&$bar; } foo(); echo $a; //global ? 為何 declared global 方式沒有辦法讓 global 變數參考到 local 變數? 關鍵在於 global $a 等於 $a=&$GLOBALS['a'],將產生區域變數 a 而此 a 參考到 global 變 數裡的數值結構,故 $a=&$bar 只是把區域變數 a 裡的數值結構換成是指向此 local 變數 bar 裡的數值結構,所以根本影響不到 global 變數 a。 那麼要如何指派陣列才能像 $GLOBALS 取出的元素位置是 global 變數的左值? 是否這是 script engine 產生的特別陣列? 一般在原碼中無法達到類似功能 。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.211.42.183