在我的表单中,我有名称为photoid []的字段,以便在发送时,当php访问它们时,它们将自动存在于数组中。
该脚本在几天前一直运行良好。而且据我所知,我没有更改ini文件中的任何php设置,也没有改变脚本。
当我尝试使用$_POST['photoid']
检索数组时,它返回一个内容为'ARRAY'的字符串,但如果我使用$_REQUEST['photoid']
访问它,则会将其正确地作为数组返回。是否有一些PHP设置会导致这种情况发生?正如我所说,我不记得最近改变任何PHP设置导致这个,但我可能会弄错,或者还有其他我错过的。
答案 0 :(得分:3)
我遇到了同样的问题。当我应该通过$_POST
接收数组时,var_dump
悲伤:'string(5) "Array"'
。当您尝试在该阵列上使用trim()
时,我发现会发生这种情况!
仔细检查您的代码,确保您没有使用$_POST
进行任何其他操作!
答案 1 :(得分: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; }
答案 2 :(得分:0)
如果在字符串上下文中使用数组,那么您将获得“数组”。而是在数组上下文中使用它。
$arr = Array('foo', 42);
echo $arr."\n";
echo $arr[0]."\n";
Array
foo
答案 3 :(得分:0)
$ _ POST ['photoid']仍然是一个数组。只需将其分配给变量,然后将其视为数组。即:$array = $_POST['photoid'];
echo $array[0];