2015-06-15 135 views
0

我遇到了一個HTML表單,其中一個字段是多選字段。當我提交表單作爲POST一切正常,我可以看到並使用該數組。作爲GET提交時,表單的多選部分僅顯示string(5) "Array"。字面上的字Array。我正在使用內置在調試工具包中的CakePHP查看查詢字符串。

這是URL

http://www.domain.com/?keywords=&location%5B%5D=12333&location%5B%5D=42123

的重要組成部分,這裏被定位陣列。但是,當我看着服務器變量它變爲:

Query String keywords=&location=Array 

這裏location只是打印字Array。無論我嘗試什麼,我都無法將位置數組傳遞給PHP。有沒有在php.ini允許這個設置?有沒有其他方法可以正確地工作?爲了保存搜索,我需要這個GET查詢。

$_GETvar_dump(上述情況略有不同的查詢):

array(10) { 
    ["agent"]=> string(0) "" 
    ["price_min"]=> string(1) "0" 
    ["price_max"]=> string(9) "987654321" 
    ["beds"]=> string(0) "" 
    ["baths"]=> string(0) "" 
    ["mls"]=> string(0) "" 
    ["pool"]=> string(1) "0" 
    ["spa"]=> string(1) "0" 
    ["keywords"]=> string(0) "" 
    ["location"]=> string(5) "Array" 
} 
+0

你能否解釋一下嗎? – Rymn

+0

URL編碼的PHP數組的字符串表示形式如何?也許使用[serialize](http://php.net/manual/en/function.serialize.php)...但真的,聽起來你應該看看發送POST。或者,如果數組不太複雜,則將它分解爲像GET那樣的鍵/對值。 – ficuscr

+0

你不應該使用'$ _GET'變量。這就是'$ this-> request-> data'和'$ this-> request-> query'的用途。嘗試使用'debug($ this-> request-> query)' – Eagle

回答

5
location%5B%5D=12333&location%5B%5D=42123 
     ^^^^^^    ^^^^^^ 

您使用的表單字段location[]命名約定,它告訴PHP創建值在超全局變量的ARRAY 。這意味着你確實有這樣的結構:

$_GET = array(
    'keywords' => '', 
    'location' => array(12333, 42123) 
); 

字符串情形數組是字面字Array

echo $_GET['location']; // outputs: Array 
echo $_GET['location'][0]; // outputs: 12333 
+0

我讀了這個問題作爲反向...認爲是數組轉換爲字符串...「數組」 – ficuscr

+0

echo $ _GET ['location'] [0]; //輸出:A echo $ _GET ['location'] [1]; //輸出:r echo $ _GET ['location'] [2]; //輸出:r echo $ _GET ['location'] [3]; //輸出:a echo $ _GET ['location'] [4]; //輸出:y – Rymn

+1

Marc B你不要留下一個問題讓我回答哈哈:) –