我已经遍布堆栈溢出并阅读类似问题的各种答案,但我仍然遇到问题,所以我肯定错过了一些东西。我的问题很简单:
我正在尝试使用POST将数组从一个页面传递到另一个页面。我没有得到我想要的回复,如下所示。有什么想法吗?
这是我的表单代码:
$my_array = array("a", "b", "c", "d");
echo "<form action='post_to_this_page.php' method='post'>";
echo "<input type='hidden' name='book_ids[]' id='hiddenField' value=" $my_array " />";
echo "<input type='submit' name='formSubmit' value='Submit' />";
echo "</form>;
这是“post_to_this_page.php:
$bookids = $_POST['book_ids'];
foreach($bookids as $thebookid)
{
echo "Book Id : " . $thebookid . "<br />";
}
打印出来的是:
书籍ID:数组
显然我正在努力得到像:
这样的回复图书ID:a
书籍ID:b
图书ID:c
图书ID:d
我确信我做的事情根本就错了,但我无法弄清楚它是什么。
提前感谢您查看我的问题。非常感谢任何见解!
答案 0 :(得分:3)
如果要在POST中传递数组,则必须稍微更改一下代码。 您应该通过'$ my_array'迭代并使用以下代码添加多个隐藏的输入字段:
foreach ($my_array as $identifier) {
echo "<input type='hidden' name='book_ids[]' value='$identifier' />";
}
另外,我从输入字段中删除了'id'字段,因为不再只有1了。
答案 1 :(得分:0)
尝试更多:
$bookids = $_POST['book_ids'];
foreach($bookids as $thebookid)
{
echo "Book Id : " . print_r($thebookid, true) . "<br />";
}
echo
无法回显数组,因此您可以使用print_r
来查找该值。
答案 2 :(得分:0)
序列化您当前的值或者有多个名为book_id[]
的输入并监听每个$_POST['book_id']
答案 3 :(得分:0)
您可以尝试这样的事情
$my_array = array("a", "b", "c", "d");
echo "<form action='post_to_this_page.php' method='post'>";
echo "<input type='hidden' name='book_ids' id='hiddenField' value="implode('-', $my_array) " />";
echo "<input type='submit' name='formSubmit' value='Submit' />";
echo "</form>;
然后将其转回您发布到的页面上的数组。
$bookIds = explode('-',$_POST['book_ids']);
foreach($bookIds as $id)
echo "Book Id: ".$id;
你实际上并没有传递数组,但结果是一样的。只是要确保你的id不包含你用于分隔符的字符(例如' - ')。
答案 4 :(得分:0)
您可以使用序列化来完成:
<input name="my_var_name" value="<?php echo serialize($mi_array) ?>"
然后,在服务器端:
$my_var=unserialize($_POST['my_var_name']);
您可以使用帖子发送字符串。