Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有变量名的PHP$\u POST_Php_Variables_Post_Wildcard - Fatal编程技术网

带有变量名的PHP$\u POST

带有变量名的PHP$\u POST,php,variables,post,wildcard,Php,Variables,Post,Wildcard,我在一个活动网站上有一个带有变量名的下拉字段,因此我不确定如何使用$u POST捕获数据 例如 tkt-slctr-qty-346[] tkt-slctr-qty-358[] 有没有一种方法可以通过使用通配符使用$\u POST捕获数据 编辑:这是html <select name="tkt-slctr-qty-346[]" id="ticket-selector-tbl-qty-slct-346-1" class="ticket-selector-tbl-qty-slct"&g

我在一个活动网站上有一个带有变量名的下拉字段,因此我不确定如何使用$u POST捕获数据

例如

tkt-slctr-qty-346[]
tkt-slctr-qty-358[]
有没有一种方法可以通过使用通配符使用$\u 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>

0
1.
2.
3.
4.
5.
6.
7.
8.
9
10

PHP支持直接使用数组表示法,而不是将id作为“名称”(将用作
$\u 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.
            }
        }
    }
}
然后在内部循环中处理它:

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

您可以将post变量添加到数组中,然后在筛选时对其进行迭代

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>';
        }
    }
}
foreach($\u发布为$k=>v){
如果(STRPO($k,'tkt slctr数量-')==0){
foreach($v作为$innerValue){
echo“Key:”.$k。“具有值:”.$innerValue。“
”; } } }
您必须遍历保存集合的$\u 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
        }   
$计数器=计数($_POST['tkt-slctr-qty-346']);
$image='';
对于($i=0;$i<$counter;$i++)
{
$data=$_POST['tkt-slctr-qty-346'][$i];
//然后在这里编写处理数据的代码
}   

你的意思是什么?名称是
$\u POST
数组的关键…我想捕获在下拉菜单中选择的任何内容,它们是数组?我假设是基于括号的?客户端作为POST值发送的任何内容都会填充到服务器端的
$\u POST
数组中。对于在服务器端。我添加了html。希望它有意义。您将OPs密钥从
tkt-slctr-qty-346[]
更改为
tkt-slctr-qty[346]
,那是行不通的。@Danfrom Germany这就是问题所在-如果他更改键,他会自动得到一个正确的数组。数组已经正确了。你假设只有一个选择字段,但显然有多个选择。你是对的,用
[]将单个值字段标记为数组是没有意义的
在名称中。HTML应该首先修复。不,这不是假设。首先,显然有多个选择字段-但不一定是每个id-如果是这样,请附加
[]
为每个id获取一个数组。要点是,您应该将前缀检查的可变部分移动到一个正确的数组键,而不是进行任何魔法前缀匹配。PHP有办法正确地执行此操作,并准确地表达海报想要做什么(即使每个id有多个选择框)。