2014-12-11 52 views
0

我还是一个新的PHP,我很难通过POST发送表单变量。 我使用jquery动态地添加具有相同名称的新字段以及表单中的自动增量ID。用自动增量计数同名变量

在_POST我需要有一个循环来获得这些变量,但我怎样才能得到循环的变量?

我有这样的事情:

$ID1_name = $_POST["ID1_name"]; 
$ID2_name = $_POST["ID2_name"]; 
$ID3_name = $_POST["ID3_name"]; 
$IDX_name = $_POST["IDX_name"]; 

$ID1_place = $_POST["ID1_place"]; 
$ID2_place = $_POST["ID2_place"]; 
$ID3_place = $_POST["ID3_place"]; 
$IDX_place = $_POST["IDX_place"]; 

可以有无限的变量具有相同名称与和AI,我有大约10瓦尔这样。

我该如何计算var的部分名称? 或 有没有更好的方法来获得这些_POST?我正在使用For循环。

我正在使用相同的名称并在数组中计数。它的工作,但我有3个领域与无线电和2复选框,并在数组中的所有相同名称的变量合并。所以食物阵列中有来自现场的所有食物复选框的记录。那有意义吗?

因此,在一个$ ID1_place =字符串我可能有$ ID1_check =阵列

感谢您的帮助。我知道有一种简单的方法,但是我认为自从我找不到任何东西以后,我找错了方向。

非常感谢。 关于

+0

让jQuery将它序列化为ID [1] [name] = foo&ID [1] [place] = bar &...';它会让你的生活变得更加简单。 – 2014-12-11 00:55:58

+0

只需创建一个分组名称,以便在PHP中使用它时更容易管理它们,就像上面的注释^ – Ghost 2014-12-11 01:03:11

+0

感谢家伙们,我刚刚阅读了Jquery序列化手册,我将尝试实现它。这听起来是一种简单而有效的方式。非常感谢。 – aoceano 2014-12-11 11:15:06

回答

0

有两种方法我可以为此考虑。或者你可以用元件的数量通过一个隐藏的元素与您的姓名,或者您可以使用preg_grepfunction匹配所有POST乏匹配正则表达式模式:

// Search keys: 
$ID_place_keys = preg_grep('/ID[0-9]+_place/', array_keys($_POST)); 

// Search values: 
$ID_places = preg_grep('/ID[0-9]+_place/', $_POST); 

// Get array of values matching keys: 
$ID_places = array_intersect_key($_POST, array_flip(preg_grep('/ID[0-9]+_place/', array_keys($_POST)))); 
// Gets a bit messy with all the array functions... 

这里是一个URL来一个简单的工作示例:

http://ideone.com/a9AhL6

+0

非常感谢您的帮助。我试过'preg_grep'函数。但它似乎只搜索数组内容,而不是var名称。当我用你显示的方式返回一个空数组。如果我只使用serch中的数字,它会返回包含数字的变量,在这种情况下会返回几个不同的变量。 – aoceano 2014-12-11 12:18:01

+0

我设法使用隐藏字段,使用JQuery计算指定字段的数量。非常感谢。 preg_grep在其他代码中很有用。没有你的帮助,我不知道该找什么。 – aoceano 2014-12-11 13:29:41

+0

对不起,我的'preg_grep'例子不好。你仍然可以将'preg_grep'与'array_keys'结合使用。我已经在我的答案中加入了一个示例 – Scopey 2014-12-11 20:09:27

0

你有没有考虑,而不是发送大量的职位变数,只有两个发送;所有的字段都是json编码的?

例如:names: ["ID1", "ID2", "ID3"]places: ["ID1", "ID2", "ID3"]。要获得像这样的AJAX参数,你可以使用JSON.stringify()对已经使用的数组进行字符串化。编号:JSON.stringify()

然后在后端只是做$names = json_decode($_POST["names"])$places = json_decode($_POST["places"])

这样你与人名和地名的ID-S的数组。你可以数它们,循环它们,做你需要的任何事情。

+1

非常感谢您的帮助。我没有使用JSON.stringfy(),但将来我会确定使用它。我将改变发送数据的方式,JSON将是您的选择。感谢帮助。 – aoceano 2014-12-11 13:31:43

+0

当然,告诉我你是否需要该解决方案的进一步帮助。 – ziGi 2014-12-12 01:22:05

+0

非常感谢您,为您的时间和耐心提供帮助。 – aoceano 2014-12-12 14:50:08