循环通过具有相似名称的$ _POST变量

时间:2011-12-19 21:33:55

标签: php string

我有几个$ _POST变量,它们是

$_POST['item_number1']
$_POST['item_number2']

等等

我需要写一个循环显示所有变量的值(我不知道有多少变量)。什么是最简单的方法呢?如果我知道有多少变量,那么最简单的方法是什么?

7 个答案:

答案 0 :(得分:15)

这将回显名称以item_number开头的所有POST参数:

foreach($_POST as $k => $v) {
    if(strpos($k, 'item_number') === 0) {
        echo "$k = $v";
    }
}

PHP手册:foreach()strpos()

答案 1 :(得分:4)

如果你知道你有多少:

for ($i=0; $i < $num_of_vars; $i++)
    echo $_POST['item_number'.$i]."<br />";

<强>更新 如果不是:

foreach($_POST as $k => $v) {
    $pos = strpos($k, "item_number");
    if($pos === 0)
        echo $v."<br />";
}

获取所有类似“item_number”

的POST变量

UPD 2 :由于piotrekkr的评论,将“==”更改为“===”。感谢

答案 2 :(得分:2)

尝试:

foreach($_POST as $k => $v)
{
    if(strpos($k, 'item_number') === 0)
    {
        echo "$k = $v";
    }
}

在上面的示例中, $ k 将是数组键, $ v 将是值。

答案 3 :(得分:1)

如果您知道变量的数量:

<?php
$n = 25; // the max number of variables
$name = 'item_number';  // the name of variables
for ($i = 1; $i <= $n; $i++) {
  if (isset($_POST[$name . $i])) {
    echo $_POST[$name . $i];
  }
}

如果您不知道号码:

<?php
$name = 'item_number';
foreach ($_POST as $key) {
  if (strpos($key, $name) > 0) {
    echo $_POST[$key];
  }
}

答案 4 :(得分:1)

如果必须坚持使用item_numberX

等变量名称
foreach (array_intersect_key($_POST, preg_grep('#^item_number\d+$#D', array_keys($_POST))) as $k => $v) {
    echo "$k $v \n";
}

foreach (new RegexIterator(new ArrayIterator($_POST), '#^a\d+$#D', null, RegexIterator::USE_KEY) as $k => $v) {
    echo "$k $v \n";
}

如果您可以控制输入名称,最好使用php input variable array feature

<input name="item_number[]">
<input name="item_number[]">
<input name="item_number[]">

然后php将它处理成一个数组。

print_r($_POST['item_number']);

答案 5 :(得分:0)

foreach($_POST as $k => $v) {
    if(preg_match("#item_number([0-9]+)#si", $k, $keyMatch)) {
        $number = $keyMatch[1];

        // ...
    }
}

答案 6 :(得分:0)

尝试:

while (list($key,$value) = each($_POST))
   ${$key} = trim($value);