2011-05-11 59 views
2

在我的表單中,我有名爲photoid []的字段,以便在發送時它們將在PHP訪問時自動處於數組中。

該腳本在相當一段時間內一直運行良好,直到幾天前。據我記得我沒有改變ini文件中的任何php設置,並沒有改變腳本。

當我嘗試使用$_POST['photoid']檢索數組時,它返回一個字符串,其內容爲'ARRAY',但如果我使用$_REQUEST['photoid']訪問它,它將以數組形式正確返回它。是否有一些PHP設置會使這發生?正如我所說,我不記得最近改變任何PHP設置導致這一點,但我可能會錯,或者是有什麼我失蹤。

+1

$ _GET ['photoid']說什麼? – 2011-05-11 00:44:33

+0

$ _GET ['photoid']爲空形式方法=「POST」 – 2011-05-11 00:58:49

回答

2

提高您的error_reporting級別以查找任何潛在來源。這很可能是你在代碼中使用了錯誤。但是也可能你的$ _POST數組被破壞,但是$ _REQUEST保持不變。

// for example an escaping feature like this might bork it 
$_POST = array_map("htmlentities", $_POST); 
// your case looks like "strtoupper" even 

要確定您的$ _POST陣列真的只是包含您所預期的數組,執行你的腳本的開頭以下字符串:

var_dump($_POST); 

,並按照一個比較:

var_dump(array_diff($_REQUEST, $_POST)); 

然後驗證你真的在兩個陣列上都使用foreach:

foreach ($_POST["photoid"] as $id) { print $id; } 
+0

已經在其上使用了var_dump,它將其報告爲字符串 – 2011-05-11 00:57:54

+1

在您的入口腳本中將其用作**最上方的**命令。然後逐漸移動它以隔離數組被修改的位置。只有可能會引入它的php設置是auto_prepend_file。 – mario 2011-05-11 01:00:00

+0

發現問題不知何故,我有一個聲明實際上設置$ _POST甚至不知道如何得到那裏... – 2011-05-11 01:07:03

0

如果你在字符串上下文中使用數組,那麼你會得到「數組」。相反,在數組上下文中使用它。

$arr = Array('foo', 42); 

echo $arr."\n"; 
echo $arr[0]."\n"; 

Array 
foo 
+0

是的,我沒有使用它作爲一個字符串,我目前正在傾銷信息使用var_dump和print_r – 2011-05-11 00:49:45

+0

然後,其他東西是干擾。但是這對PHP本身並不是問題。 – 2011-05-11 00:51:01

0

$ _POST [ 'PHOTOID']仍然是一個數組。只需將其分配給一個變量,然後將其視爲一個數組。即:$array = $_POST['photoid']; echo $array[0];

+0

不,它是一個字符串,var_dump和gettype甚至可以確認它是一個包含文本ARRAY的字符串。 – 2011-05-11 00:57:23

3

我有同樣的問題。當我應該通過$_POST接收陣列,但是var_dump悲傷:'string(5) "Array"'。我發現這種情況發生,當你嘗試在該陣列上使用trim()! 仔細檢查你的代碼,確保你沒有做任何與$_POST

相關問題