我仍然是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
感谢您的帮助。我知道有一个简单的方法,但我认为我找错了方法,因为我什么都没发现。
非常感谢。 问候
答案 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:
答案 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。你可以统计它们,循环它们,做你需要的任何事情。