PHP $ _POST,变量名为

时间:2018-03-15 12:15:23

标签: php variables post wildcard

我在具有变量名称的活动网站上有下拉字段,因此我不确定如何使用$ _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">&nbsp;0&nbsp;</option>
   <option value="1">&nbsp;1&nbsp;</option>
   <option value="2">&nbsp;2&nbsp;</option>
   <option value="3">&nbsp;3&nbsp;</option>
   <option value="4">&nbsp;4&nbsp;</option>
   <option value="5">&nbsp;5&nbsp;</option>
   <option value="6">&nbsp;6&nbsp;</option>
   <option value="7">&nbsp;7&nbsp;</option>
   <option value="8">&nbsp;8&nbsp;</option>
   <option value="9">&nbsp;9&nbsp;</option>
   <option value="10">&nbsp;10&nbsp;</option>
</select>

4 个答案:

答案 0 :(得分:3)

而不是将id作为&#34; name&#34;的一部分。 (它将用作$_POST数组中的键,PHP支持直接使用数组表示法:

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.
            }
        }
    }
}

答案 1 :(得分:2)

您可以将变量发布到数组,然后在过滤时迭代它。

foreach($_POST as $key => $value) {
  $pos = strpos($key , "tkt-slctr-qty-");
  if ($pos === 0){
    // do something with $value
  }
}

答案 2 :(得分:2)

当您提交这些数组时,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>';
        }
    }
}

答案 3 :(得分:0)

你必须通过保存集合的$ _POST数组进行迭代。请遵循以下模式

return "C Status"