从$ _POST值创建数组

时间:2012-11-04 16:50:19

标签: php arrays forms

让我们开始告诉我,我正在通过表单中的帖子传递x个变量 我们将它们命名为menu_category_1menu_category_2,...,menu_category_x,加上,也许,menu_category_new(我使用if if来检查最后一个变量)。

为了方便起见,我还发送参数$key(从0开始的变量数量) 现在我需要将它们设置为一个新的变量$menu_category(数组),它将被内爆,然后更新我的数据库。

如何将新的$menu_category变量设置为包含我在开头命名的所有变量的数组?
我正在考虑使用for循环,但我无法想出一些有用的东西。 感谢!!!


我最后走了Quentin的方式,只需在键上添加[]。我选择它只是因为它立即起作用。然而,我将深入研究janenz00的消化,我个人认为这是可行的方法。 感谢所有花时间经历这一切的人!!!!

5 个答案:

答案 0 :(得分:1)

  

我们将它们命名为menu_category_1menu_category_2

您正在使用PHP,因此我们将其命名为menu_category[0]menu_category[1]等(或menu_category[]menu_category[]等)。

然后$_POST['menu_category']$_GET['menu_category']将是一个数组。

  

将被内爆,然后更新我的数据库

规范化您的数据库。使用外键和第二个表来表达您的一对多关系,而不是通过存储CSV数据。

答案 1 :(得分:1)

您将表单元素(所有相同类型的元素)命名为menu_category[](而不是menu_category_N)。

当您提交表单时,PHP会自动将它们排列成一个数组!

答案 2 :(得分:1)

目前,首选使用表单中的[]语法。

但是,如果您因某些原因不想这样做,可以这样做:

for ($x = 0; $x <= $_POST['key']; $x++) {
   $menu_category[] = $_POST["menu_category_$x"];
}
$menu_category[] = $_POST['menu_category_new'];

答案 3 :(得分:1)

最好的方法是,当您发布信息时,将其构造成这样。

<input type="text" name="cat_names[]" />
<input type="text" name="cat_names[]" />
<input type="text" name="cat_names[]" />

现在,当您发布数据时,变量$ _POST ['cat_names']将包含3个元素。如果你有4个输入框,它将是一个4元素数组。

示例:

<input type="text" name="cat_names[]" value="a" />
<input type="text" name="cat_names[]" value="b" />
<input type="text" name="cat_names[]" value="echo" />
<input type="text" name="cat_names[]" value="kitten" />

发布数据

$_POST['cat_names'] = array('a', 'b', 'echo', 'kitten');

虽然不会说订单会被保留,但'b'可能在'a'之前。

但这取决于您使用输入还是通过JavaScript进行输入。如果您使用JS,您也可以发送其他信息,或使用JSON。

答案 4 :(得分:1)

如上所述,最好的方法是将所有内容从表单本身传递为数组。如果由于任何原因无法修改当前代码,则可以在当前方案中处理它。

    $menu_category = array();
    for ($i = 1; $i <= $_POST['key']; $i++) {
        if (!empty($_POST['menu_category_'.$i]))
           $menu_category[] = $_POST['menu_category_'.$i];

    }