簡體   English   中英

PHP $ _POST具有變量名

[英]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">&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>

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM