推 UniFish:array的=是「複製」02/15 09:10
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
:
: 更搞混的還有...
:
: 請問以下變數作用範圍是?
:
: {$a}
個人沒寫過這種寫法,估計只有在 "{$a}",雙引號內部出現,
:
: function A(){$a}
local
:
: while(true){$a}
global
:
: 我知道一般寫在最外頭的變數好像強到可以跨過不同的指令稿
:
: 所以會讓多個頁面利用include同一指令稿的方式共用變數
:
: 但所謂的共用,這些變數是屬於同一個Request嗎?
:
如果你指的同個 request = 同個 client 的 同個 connection 的話
那麼,是的。
: 比如有一組頁面
:
: page_one.php
:
: page_two.php
:
: page_three.php
:
: 它們皆 include 一個 global.php,global.php 內含一個 $my_var
:
: 王小明透過瀏覽器觀看 page_one.php
:
: 陳小華透過瀏覽器觀看 page_two.php
:
: 假設兩個頁面會分別對 $my_var做操作,值會不同
:
會
: 那他們得到的 $my_var 結果會一樣嗎?
:
不會
PHP 中沒有 ASP 的 Application 全域系統變數,
生命週期就只有 client 開始連線到結束。
(當然你可以用寫檔/share momery的方式來弄一個跟 ASP Application 變數一樣)
($_SESSION 存在主機上,看你設定多久,
$_COOKIE 在 client 上,一樣看你的 expire time,其他變數幾乎都是執行完就死了)
: 還是說共用僅止於小明本人?
:
不考慮上述的 Application 變數的話
小明的變數僅小明
小華的變數僅小華
:
: 問得很支離破碎抱歉...因為我也不是很清楚問題長什麼樣子,具體有哪些問題等等
:
: 如果清楚問題的話也許自己就可以解決了冏
: ※ 編輯: p52189 來自: 114.42.225.45 (02/14 21:39)
: → tyf99:不同 client 的變數是分開的,因為是不同的 php thread 02/14 23:48
: → tyf99:不同 thread 的變數要互通,就要透過 shared memory 02/14 23:49
: → tyf99:變數的生命期,一般來說最長的是$_SESSION,然後才是global 02/14 23:51
: → tyf99:不過一般不會用 shared memory,難寫,透過資料庫比較簡單 02/14 23:53
memcache 是個好方法!(但還是要稍微搭配資料庫做紀錄)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.85.64.11
推 p52189:感謝!非常清楚! 02/15 07:31
→ p52189:不過印象中HTTP不是一問一答的嗎? 所以才說request 02/15 07:33
→ p52189:搞錯的話不好意思 02/15 07:33
→ gname:php沒有重載,但有寫法可以仿... 02/15 08:34
推 UniFish:array的=是「複製」 02/15 09:10
推 kerash:php 的重載大多數都是用 func_get_arg() 取得輸入參數 02/15 09:11
→ kerash:判斷 arg 的長度 if=1 or if=2 ... etc 之後 02/15 09:12
→ kerash:再看看要不要針對每個輸入的參數判斷型態來呼叫執行 02/15 09:12
→ kerash:以上說的是仿造的方式 02/15 09:13
推 gname:推樓上~ 就是醬~ 02/15 10:53
把樓上板友 array = 的定義放到文章內。
※ 編輯: chrisQQ 來自: 219.85.64.11 (02/15 17:13)
推 kusoayan:複製是在改變其值時才會進行 02/16 00:47