[英]PHP $_POST with variable name
我在活动网站上有带有变量名的下拉字段,所以我不确定如何使用$ _POST捕获数据
一个例子是
tkt-slctr-qty-346[]
tkt-slctr-qty-358[]
有没有办法使用通配符使用$ _POST捕获数据?
编辑:这是HTML
<select name="tkt-slctr-qty-346[]" id="ticket-selector-tbl-qty-slct-346-1" class="ticket-selector-tbl-qty-slct">
<option value="0"> 0 </option>
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
<option value="4"> 4 </option>
<option value="5"> 5 </option>
<option value="6"> 6 </option>
<option value="7"> 7 </option>
<option value="8"> 8 </option>
<option value="9"> 9 </option>
<option value="10"> 10 </option>
</select>
PHP支持将数组表示法直接使用数组表示法,而不是将id作为“名称”的一部分(将用作$_POST
数组中的键)。
name="tkt-slctr-qty[346]"
name="tkt-slctr-qty[358]"
然后,您可以在一个键下迭代这些:
if (!empty($_POST['tkt-slctr-qty']) && is_array($_POST['tkt-slctr-qty'])) {
foreach ($_POST['tkt-slctr-qty'] as $id => $qty) {
// handle each id/qty value
}
}
如果每个ID 确实也有多个选择框,则在每个ID后面附加[]
,然后创建一个内部循环:
name="tkt-slctr-qty[346][]"
...
name="tkt-slctr-qty[358][]"
然后在一个内部循环中处理它:
if (!empty($_POST['tkt-slctr-qty']) && is_array($_POST['tkt-slctr-qty'])) {
foreach ($_POST['tkt-slctr-qty'] as $id => $qtys) {
if (is_array($qtys)) {
foreach ($qtys as $qty) {
// handle each qty if there are multiple fields.
}
}
}
}
您可以将变量发布到数组,然后在过滤时对其进行遍历。
foreach($_POST as $key => $value) {
$pos = strpos($key , "tkt-slctr-qty-");
if ($pos === 0){
// do something with $value
}
}
当您提交这些数组时,PHP将以这种方式接收它们:
$_POST['tkt-slctr-qty-358'][0]
$_POST['tkt-slctr-qty-358'][1]
// ...
如果您打算动态捕获键末尾的数字,则可以执行以下操作:
foreach ($_POST as $k => $v) {
if (strpos($k, 'tkt-slctr-qty-') === 0) {
foreach ($v as $innerValue) {
echo 'Key: ' . $k . ' has value: ' . $innerValue . '<br>';
}
}
}
您必须遍历保存该集合的$ _POST数组。 遵循以下模式
$counter = count($_POST['tkt-slctr-qty-346']);
$image = '';
for($i=0; $i< $counter; $i++)
{
$data = $_POST['tkt-slctr-qty-346'][$i];
//Then Write the code that processes the data here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.