PHP如何使用POST传递数组

时间:2014-02-16 17:50:26

标签: php arrays post

我已经遍布堆栈溢出并阅读类似问题的各种答案,但我仍然遇到问题,所以我肯定错过了一些东西。我的问题很简单:

我正在尝试使用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

我确信我做的事情根本就错了,但我无法弄清楚它是什么。

提前感谢您查看我的问题。非常感谢任何见解!

5 个答案:

答案 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']);

您可以使用帖子发送字符串。