2 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
根據(jù) PHP 手冊中“確定變量類型”下的外部源變量:
HTTP 是一種文本協(xié)議,大多數(shù)(如果不是全部)來自超全局?jǐn)?shù)組的內(nèi)容(例如 $_POST 和 $_GET)將保留為字符串。PHP 不會嘗試將值轉(zhuǎn)換為特定類型。
同樣,在手冊的常見問題解答:HTML 表單中的數(shù)組中,我們讀到了數(shù)組:
要將
<form>
結(jié)果作為數(shù)組發(fā)送到 PHP 腳本,您可以像這樣 命名<input>
,<select>
或元素:<textarea>
<input name="MyArray[]" /> ...
這將變成一個(gè)查詢字符串?MyArray[]=foo&MyArray[]=bar
等,可用作$_GET['MyArray'][0]
和$_GET['MyArray'][1]
。您還可以使用命名鍵;查詢?var[x]=one&var[y]=two
將產(chǎn)生關(guān)聯(lián)數(shù)組$_GET['var] = ['x' => 'one', 'y' => 'two']
;并將?var[x][]=deep
成為$_GET['var']['x'] = ['deep']
等
此外,該手冊還$_GET
注明了以下內(nèi)容:
注意: GET 變量通過urldecode()?傳遞。
然后,查看簽名urldecode
:
urldecode?(?string?$str?)?:?string
換句話說,用于預(yù)處理$_GET
值的函數(shù)接受一個(gè)字符串并返回一個(gè)字符串。顯然,當(dāng)傳入一個(gè)數(shù)組時(shí),它將應(yīng)用于urldecode
該數(shù)組的每個(gè)字符串值。(如果有人想找到負(fù)責(zé)生成 的 PHP 源代碼部分$_GET
,請分享鏈接,將其包含在此處。)
請注意,空值(例如 in??foo&bar=1
)不會導(dǎo)致[foo] NULL
,而是導(dǎo)致 in?,[foo] string(0) ""
換句話說,結(jié)果為零長度string
。我們再次得到[bar] string(1) "1"
.?沒有將值類型轉(zhuǎn)換get
為post
整數(shù)、浮點(diǎn)數(shù)、布爾值或 null。
總之,接收到的可能數(shù)據(jù)類型$_GET
是string
and?array
(字符串;或進(jìn)一步的數(shù)組;最后的標(biāo)量“葉子”是字符串)。當(dāng)然,如果你在 PHP 代碼中顯式聲明$_GET['foo'] = null
or?$_GET['bar'] = 1
,那么就會有整數(shù)和空值。上述內(nèi)容適用于 PHP 從外部源解析的變量。
更新:雖然上述內(nèi)容對于從查詢字符串解析的所有值都是正確的,但對于PHP 從查詢字符串中提取的鍵來說情況有所不同。假設(shè)以下 URL:
test.php?101=foo&202=bar&dev=ops
現(xiàn)在,var_dump(array_keys($_GET))
數(shù)字鍵會返回什么?整數(shù),而不是字符串:
array(3)?{ ????[0]?·?int(101) ????[1]?·?int(202) ????[2]?·?string(3)?"dev"}
這符合 PHP數(shù)組鍵的標(biāo)準(zhǔn)轉(zhuǎn)換:“包含有效十進(jìn)制整數(shù)的字符串,除非數(shù)字前面有 + 號,否則將轉(zhuǎn)換為整數(shù)類型。?”。然而,以下關(guān)鍵轉(zhuǎn)換不會發(fā)生:“浮點(diǎn)數(shù)也轉(zhuǎn)換為整數(shù),這意味著小數(shù)部分將被截?cái)??!?因?yàn)椋ㄈ鐏碜酝獠吭吹淖兞恐兴觯?em>“[外部]變量名稱中的點(diǎn)和空格將轉(zhuǎn)換為下劃線?!?/em>
外部變量類型轉(zhuǎn)換:總結(jié)
查詢字符串的值將始終是strings或以字符串作為最終標(biāo)量值的數(shù)組(數(shù)組的)。
查詢字符串的鍵將始終是strings,除了被轉(zhuǎn)換為整數(shù)的整數(shù)(無符號正數(shù):
3
,-3
有符號負(fù)數(shù):) 。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
查詢字符串本身是 a string
,但其中的變量可以解析為string
or array
:
url.com?var=123
=> var 是字符串
url.com?var[]=123&var[]=321
=> var 是一個(gè)數(shù)組
- 2 回答
- 0 關(guān)注
- 128 瀏覽
添加回答
舉報(bào)