Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String - Fatal编程技术网

Php 循环使用具有类似名称的$\u POST变量

Php 循环使用具有类似名称的$\u POST变量,php,string,Php,String,我有几个$u POST变量,它们是 $_POST['item_number1'] $_POST['item_number2'] 等等 我需要写一个循环来显示所有变量的值(我不知道有多少)。最简单的方法是什么?如果我知道我有多少变量,最简单的方法是什么 试试看: foreach($_POST as $k => $v) { if(strpos($k, 'item_number') === 0) { echo "$k = $v"; } } 在上面的示例

我有几个$u POST变量,它们是

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

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

试试看:

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

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

如果你知道你有多少人:

for ($i=0; $i < $num_of_vars; $i++)
    echo $_POST['item_number'.$i]."<br />";
for($i=0;$i<$num\u of_vars;$i++)
echo$_POST['item_number.$i]。“
”;
更新: 如果没有:

foreach($\u发布为$k=>v){
$pos=STRPO($k,“项目编号”);
如果($pos==0)
echo$v.“
”; }
获取所有类似于“item_number”的POST变量


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

这将回显名称以
项目编号开头的所有POST参数

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

PHP手册:,

如果您知道变量的数量:

<?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];
  }
}

如果您必须坚持使用诸如item\u numberX之类的变量名

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

如果可以控制输入名称,最好使用php

<input name="item_number[]">
<input name="item_number[]">
<input name="item_number[]">
尝试:


还有其他的$\u POST变量,我只需要那些以“item\u number”开头的变量,我想@Natalia想要的是
item\u number
在key的开头,所以应该有
strpos($k,'item\u number')==0
你是从表单中得到这些值的吗?可以使用表单数组样式提交,方法是将表单元素设置为:name='item'\u number[]'样式,这样您就可以在$\u POST变量中循环使用该数组。您应该使用
if($pos==0)
因为
strpos()
当指针位于字符串开头时返回
0
,当指针未找到时返回
false
<?php
$name = 'item_number';
foreach ($_POST as $key) {
  if (strpos($key, $name) > 0) {
    echo $_POST[$key];
  }
}
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";
}
<input name="item_number[]">
<input name="item_number[]">
<input name="item_number[]">
print_r($_POST['item_number']);
while (list($key,$value) = each($_POST))
   ${$key} = trim($value);