2011-05-11 73 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

相关问题