我有一个名为product_id []的表单元素,它是一个数组。 例如。
<input type="hidden" name="product_id[]" value="1" />
<input type="hidden" name="product_id[]" value="2" />
在我的开发服务器上
print_r($_POST['product_id']);
我获得了所有产品ID值。当我尝试在我们的实时服务器中执行相同操作时,只需在屏幕上打印字符串“Array”。我尝试在没有任何运气的情况下更改我的表格中的ENCTYPE。当我更改为GET时,我将所有值都打印在我的URL中,但是当我执行print_r($ _ GET ['product_id'])时,我的帖子与post相同。所以,我希望这应该与PHP $ _POST和$ _GET有关。我的实时服务器中是否有任何扩展或模块?
任何人都可以对此有所了解吗?
谢谢,
答案 0 :(得分:2)
来自你的评论:
["product_id"]=> string(5) "Array"
这意味着$_POST['product_id']
是一个包含单词Array
的字符串。您发布的代码不会发生这种情况。我的猜测是你使用一个完整的PHP数组填充一个名为product_id
的表单字段,而不是其中一个项目。 E.g:
$foo = array(1, 2, 3);
echo '<input type="hidden" name="product_id" value="' . $foo . '">';
...打印:
<input type="hidden" name="product_id" value="Array">
<强>更新强>
我不确定你是否完全理解我的观点。这是一个完整的代码片段,可以重现您的问题:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
</head>
<body>
<?php
echo '<xmp>'; var_dump($_POST); echo '</xmp>';
?>
<form action="" method="post">
<div>
<input type="hidden" name="product_id[]" value="1">
<input type="hidden" name="product_id[]" value="2">
<?php
$foo = array(1, 2, 3);
echo '<input type="hidden" name="product_id" value="' . $foo . '">';
?>
</div>
<div><input type="submit" name="Submit"></div>
</form>
</body>
</html>
正如我所说,你向我们展示的唯一代码不能产生这种效果。这就是看到完整代码如此重要的原因。
答案 1 :(得分:0)
您可以尝试打印的帖子就像这个print_r($ _ POST),现在您可以看到product_id是否通过了
答案 2 :(得分:0)
因此,由于某种原因,您的变量似乎是字符串"Array"
而不是实际数组。这很奇怪,我以前没见过。
作为临时解决方法,您可以尝试使用parse_str
并查看是否正确导出product_id
的值。
答案 3 :(得分:0)
有些事情可能会出错。您只打印出“Array”的原因是因为$ _POST是空数组。造成这种情况的原因可能是PHP本身的实际配置错误,如果您安装了Suhosin,或者可能是您的错误。通常,在我的情况下,这总是我的错:)
至少应该涵盖可能发生的最常见的错误。
答案 4 :(得分:0)
发生了一些隐式的数组到字符串类型转换。
如果真的你的var_dump()工作,而print_r()没有,那肯定是一个PHP错误,你应该检查服务器上的PHP版本并更新它。
当你的foreach($ _POST as $ v)echo $ v时,你的实时服务器会发生什么? ?
请确认print_r($ _ POST)和var_dump($ _POST)的行为方式不同。
答案 5 :(得分:0)
好吧伙计这不是那么奇怪..如果print_r($ _ POST ['product_id'])返回一个数组......一切都是正确的.congrats ...... Wat可能出错的是您编写html代码的方式..将分配索引分配给product_id ..