使用自动增量计算具有相同名称的变量

时间:2014-12-11 00:45:22

标签: php jquery arrays count

我仍然是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 = string中我可能有$ ID1_check = array

感谢您的帮助。我知道有一个简单的方法,但我认为我找错了方法,因为我什么都没发现。

非常感谢。 问候

2 个答案:

答案 0 :(得分:0)

我可以通过两种方式来考虑这个问题。您可以使用包含姓名的元素数量传递隐藏元素,也可以使用preg_grep function匹配匹配正则表达式模式的所有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

答案 1 :(得分: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。你可以统计它们,循环它们,做你需要的任何事情。